Php 尝试从2个表获取数据时出错codeigniter
我要从两个表中获取数据。。我的表格是“研究”、“用户”和“主题” “研究”包括:(id、用户id[是表“用户”中“id”列的外键]、科目id[是表“科目”中“id”列的外键]、年级、日期) “用户”包括:(id、用户名、姓名、姓氏、密码、类型、状态、日期) “主题”包括:(id、职业id、姓名、描述、时间) 我想在最后得到这样的东西: 我得到了这个错误: 这是我的密码: 我的视图文件(“主页”):Php 尝试从2个表获取数据时出错codeigniter,php,mysql,codeigniter,fetch,Php,Mysql,Codeigniter,Fetch,我要从两个表中获取数据。。我的表格是“研究”、“用户”和“主题” “研究”包括:(id、用户id[是表“用户”中“id”列的外键]、科目id[是表“科目”中“id”列的外键]、年级、日期) “用户”包括:(id、用户名、姓名、姓氏、密码、类型、状态、日期) “主题”包括:(id、职业id、姓名、描述、时间) 我想在最后得到这样的东西: 我得到了这个错误: 这是我的密码: 我的视图文件(“主页”): 表:研究 身份证件 使用者 主题 等级 日期 行动 未定义的索引和尝试获取属性非对象或多
表:研究
身份证件
使用者
主题
等级
日期
行动
未定义的索引和尝试获取属性非对象或多或少意味着相同的事情,即您没有获取正确的数据,或者您尝试获取的变量或索引没有初始化或未定义,这可能是查询中的错误或您正在运行的查询返回空数据
我想请求您像这样提取查询数据
$check = $this->db->query("SELECT * FROM SOMETHING AND YOUR CONDITION AND STUFF HERE");
if($check->num_rows()>0){
$result = $check->result();
return $result;
}else{
return false; // or anything you want.
}
$someVariable = $this->model_name->function();
if($someVariable!==FALSE){
// handle
}else
{
// handle
}
假设这个查询函数存储在模型中,您可以这样调用您的模型
$check = $this->db->query("SELECT * FROM SOMETHING AND YOUR CONDITION AND STUFF HERE");
if($check->num_rows()>0){
$result = $check->result();
return $result;
}else{
return false; // or anything you want.
}
$someVariable = $this->model_name->function();
if($someVariable!==FALSE){
// handle
}else
{
// handle
}
最后,我不知道为什么,但有时我也会用双引号来解决问题,是的,我知道。。双引号内的变量起作用,我只是说有时。。。至少它发生在我身上,所以我想请求最后一件事。尝试像这样调试您的查询,目前您有
"SELECT * FROM TABLE WHERE THIS = $THAT"
将此更改为
"SELECT * FROM TABLE WHERE THIS = '".$THAT."'"
我希望这对你有好处
编辑:
(很抱歉,我未能从您自己的代码中显示示例)
您的模型文件
<?php
class Crudmodel extends CI_Model{
public function __construct(){
parent::__construct();
$this->load->database();
}
function selectStudys()
{
$query= $this->db->query("SELECT * FROM Study");
if($query->num_rows()>0){
$result = $query->result_array();
}else{
$result = "";
// or anything you can use as error handler
return $result;
}
}
function getName($name)
{
$query= $this->db->query("SELECT username FROM Users WHERE id = $name ");
if($query->num_rows()>0){
$result = $query->result_array();
}else{
$result = "";
// or anything you can use as error handler
return $result;
}
}
function getSubName($subject)
{
$query= $this->db->query("SELECT name FROM Subjects WHERE id = $subject ");
if($query->num_rows()>0){
$result = $query->result_array();
}else{
$result = "";
// or anything you can use as error handler
return $result;
}
}
function CombineResults($subject, $name){
// you can also use this
$query = $this->db->query("SELECT sub.name, user.username FROM Subjects sub, Users user WHERE sub.id=$subject AND user.id = $name");
if($query->num_rows()>0){
return $query->result();
}else{
return "";
// or anything you can use as error handler
}
}
}
?>
Iam将您的查询更改为“加入查询”,只需将代码更改为以下内容
public function index(){
# get all data in Study table
$query = $this->db->query("SELECT sd.user_id as id,sd.grade as grade,sd.date as date,sd.subject_id as subject,ur.username as user FROM Study as sd,Users as ur,Subjects as sb WHERE ur.id=sd.user_id and sb.id=sd.subject_id");
$result = $query->result_array();
$data['records'] = $result;
$this->load->view('home', $data);
}
现在运行代码伙计,你能帮我用mycode吗?我有点头晕:如果我的回答让情况恶化,我很抱歉,我该怎么帮你,你尝试过我的解决方案吗,兄弟?只需尝试在空白或错误查询上添加处理程序,以便索引不为空。它将解决您的问题,例如,您正在尝试初始化$var['index']='
和$var['index']=$something
假设$something
是当您的代码在使用num_rows()检查查询响应后具有值时
和null
是指当您的查询不起作用,并且在检查num_rows()==0
后返回空值时,它会修复。我的意思是,我不理解您的答案:S。如果您可以将其与我的代码结合起来,您会帮我很多忙。mate:)mate,它说有一个错误,请查看:如果(!empty($user[0]['username')){
我错过了“)
”结束小括号请穿上这个,如果(!empty($user[0]['username']){
-更新了答案并在那里添加了小括号,它会像这样工作。-不工作,朋友,看一下:等等:/Not working:S,看一下伙计:它工作不正常,我得到了这个图表:这是我的数据库(用户)和我的主题数据库:你在吗,伙计?
public function index(){
# get all data in Study table
$selectStudys = $this->Crudmodel->selectStudys();
// we have condition on this model method/function we can validate
// response comming from this method and add handler just like we did
// for queries. your main problem can be this
foreach ($selectStudys as $key => $study)
{
# get UserNames
$user = $this->Crudmodel->getName($study['user_id']);
#get Subject Names
$subject = $this->Crudmodel->getSubName($study['subject_id']);
#append both NEW VALUES to same array
if(!empty($user[0]['username'])){
$data[$key]['user_id'] = $user[0]['username'];
// your main problem can be this. may be it is not getting value from query this is why we have put validation on model function and error handler condition here
}else{
$data[$key]['user_id'] = ''; // or anything as your else condition you can use as error handler
}
if(!empty($subject[0]['name'])){
$data[$key]['subject_id'] = $subject[0]['name'];
// your main problem can be this. may be it is not getting value from query this is why we have put validation on model function and error handler condition here
}else{
$data[$key]["subject_id"] = "";
// or anything you can use as error handler
}
}
$data['records'] = $selectStudys;
$this->load->view('home', $data);
}
public function index(){
# get all data in Study table
$query = $this->db->query("SELECT sd.user_id as id,sd.grade as grade,sd.date as date,sd.subject_id as subject,ur.username as user FROM Study as sd,Users as ur,Subjects as sb WHERE ur.id=sd.user_id and sb.id=sd.subject_id");
$result = $query->result_array();
$data['records'] = $result;
$this->load->view('home', $data);
}