Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysqli_fetch_assoc崩溃,但mysqli_fetch_数组(mysqli_NUM)工作正常_Php_Mysql - Fatal编程技术网

Php mysqli_fetch_assoc崩溃,但mysqli_fetch_数组(mysqli_NUM)工作正常

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

当我尝试使用fetch_assoc或fetch_数组(MYSQLI_assoc)时,程序只是崩溃了,并且没有显示任何错误信息(我确实已将错误报告更改为E_ALL)。但是使用fetch_数组(MYSQLI_NUM)或fetch_row()时,它工作正常。 奇怪的是我可以在Wamp上运行我的程序。但是我无法在手动安装的Apache+PHP+MYSQL环境上运行。 这是PHP配置问题还是MYSQL问题

 $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。