Php mysqli_fetch_assoc崩溃,但mysqli_fetch_数组(mysqli_NUM)工作正常
当我尝试使用fetch_assoc或fetch_数组(MYSQLI_assoc)时,程序只是崩溃了,并且没有显示任何错误信息(我确实已将错误报告更改为E_ALL)。但是使用fetch_数组(MYSQLI_NUM)或fetch_row()时,它工作正常。 奇怪的是我可以在Wamp上运行我的程序。但是我无法在手动安装的Apache+PHP+MYSQL环境上运行。 这是PHP配置问题还是MYSQL问题Php mysqli_fetch_assoc崩溃,但mysqli_fetch_数组(mysqli_NUM)工作正常,php,mysql,Php,Mysql,当我尝试使用fetch_assoc或fetch_数组(MYSQLI_assoc)时,程序只是崩溃了,并且没有显示任何错误信息(我确实已将错误报告更改为E_ALL)。但是使用fetch_数组(MYSQLI_NUM)或fetch_row()时,它工作正常。 奇怪的是我可以在Wamp上运行我的程序。但是我无法在手动安装的Apache+PHP+MYSQL环境上运行。 这是PHP配置问题还是MYSQL问题 $studentId = $this->mydblink->real_escape_s
$studentId = $this->mydblink->real_escape_string($studentId);
$result = $this->mydblink->query("SELECT * FROM student WHERE id = '$studentId'");
if($result->num_rows <= 0){
$result->free();
return null;
}
else{
$returnValue = array();
while($row = $result->fetch_assoc()){
array_push($returnValue,$row);
}
$result->free();
return $returnValue;
}
$studentId=$this->mydblink->real\u escape\u字符串($studentId);
$result=$this->mydblink->query(“从id为“$studentId”的学生中选择*);
如果($result->num_rows free();
返回null;
}
否则{
$returnValue=array();
而($row=$result->fetch_assoc()){
数组_push($returnValue,$row);
}
$result->free();
return$returnValue;
}
fetch_array()生成一个包含键和值的关联数组。
fetch_assoc()仅具有值
您还可以使用fetch_object()创建表名的对象
| id | category | name |
----------------------------------
| 1 | 2, 5, 7, 28 | Will |
----------------------------------
| 2 | 2, 9, 15, 18 | Drew |
示例:
$sql=mysqli_query($connect, "SELECT id, category, name FROM users");
$data=mysqli_fetch_array($sql);
// 0=>id, 1=>category, 2=>name
$data[1]; // is same like $data['category'];
$data['category'];
$data=mysqli_fetch_assoc($sql);
$data['name'];
$data=mysqli_fetch_object($sql);
$data->name;
$data->category;
$data->id;
很可能是php的问题,它得到了什么列名称?了解列名是什么会很有趣。可能有一个列的名称是php无法处理的数组下标值。这似乎不太可能,但这是我能想到的唯一解释。另外,如果更改
SELECT,会发生什么*
进入选择字段1、字段2等。不知道这是否有帮助?(在任何情况下,最好在查询中命名字段,而不是执行*
,因此无论如何这都是一件好事)哦,你运行的是什么PHP和MySQL版本?这可能是相关的。如果它们不是最新版本,你是否尝试过更新?或检查?最后,如果你能在最新的PHP版本上可靠地重现这一点,你应该向PHP错误跟踪者报告。我唯一能想到的是如果有两个列名称是数字我认为php会尝试将它们截断为整数键,然后可能是相同的值。也就是说,如果有一列1.1和一列1.2,php会将它们都视为1。