Maison >développement back-end >tutoriel php >Fatal error: Call to a member function fetch_array() on a non-object 错误
include_once ('conn.php');//error_reporting(0);@$shops_name= $_GET["shops_name"];if (isset($shops_name)) { echo $shops_name; $query = "SELECT * FROM goods WHERE ShopName= '$shops_name'"; @$q = $conn->query($query); while($row=$q->fetch_array()) { $select[]=array("goods_id"=>$row[ID],"goods_name"=>$row[Name]); } echo json_encode($select);}
贴出你的 conn.php
$conn = new mysqli("localhost","root","zxfang","test02");
if (!$conn) {
die("连接数据库失败:".mysqli_connect_error());
}
$conn->query("set character set 'gbk'");
$conn->query("set names 'gbk'");
?>
$q = $conn->query($query);
echo $q = $conn->error;
$q = $conn->query($query);
echo $q = $conn->error;
什么意思??
修改表字段编码后没有 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (gbk_chinese_ci,COERCIBLE) for operation '= 了,可还是Fatal error: Call to a member function fetch_array() on a non-object
@$q = $conn->query($query);
改为
$q = $conn->query($query) or die($conn->error);
看看有什么错误输出。
估计你的sql执行有问题。
@$q = $conn->query($query);
改为
$q = $conn->query($query) or die($conn->error);
看看有什么错误输出。
估计你的sql执行有问题。
不要随意的修改有数据的表的字符集,因为修改字符集的动作并不会同时修改内容的字符集
请改回盐来得字符集设置,以免数据丢失!
$query = "SELECT * FROM goods WHERE ShopName= '$shops_name'";
后
echo base64_encode($query);
贴出结果(当然是要是出错时候的)
不要随意的修改有数据的表的字符集,因为修改字符集的动作并不会同时修改内容的字符集
请改回盐来得字符集设置,以免数据丢失!
$query = "SELECT * FROM goods WHERE ShopName= '$shops_name'";
后
echo base64_encode($query);
贴出结果(当然是要是出错时候的)
echo base64_decode('U0VMRUNUICogRlJPTSBnb29kcyBXSEVSRSBTaG9wTmFtZT0gJ+W6lzEn');
哦,原来是这样,我对于编码一直都不是很了解。
好了,问题解决了,谢谢版主。