• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Fatal error: Call to a member function fetch_array() on a non-object 错误

php 搞代码 3年前 (2022-01-23) 30次浏览 已收录 0个评论
文章目录[隐藏]
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);}

将@query 复制到mysql查询成功。可是在这里失败了,求解。

回复讨论(解决方案)

贴出你的 conn.php

<?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 ‘=

什么意思??

修改表字段编码后没有 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执行有问题。

原表有
Illegal mix of collations (utf8_general_ci,IMPLICIT) and (gbk_chinese_ci,COERCIBLE) for operation ‘=’ 错误。
表字段编码改成gbk后 $conn-error就没错误输出了,可还是有Fatal error: Call to a member function fetch_array() on a non-object 。

不要随意的修改有数据的表的字符集,因为修改字符集的动作并不会同时修改内容的字符集
请改回盐来得字符集设置,以免数据丢失!

$query = “SELECT * FROM goods WHERE ShopName= ‘$shops_name'”;

echo base64_encode($query);
贴出结果(当然是要是出错时候的)

不要随意的修改有数据的表的字符集,因为修改字符集的动作并不会同时修改内容的字符集
请改回盐来得字符集设置,以免数据丢失!

$query = “SELECT * FROM goods WHERE ShopName= ‘$shops_name'”;

echo base64_encode($query);
贴出结果(当然是要是出错时候的)

U0VMRUNUICogRlJPTSBnb29kcyBXSEVSRSBTaG9wTmFtZT0gJ+*本5文来源gaodai$ma#com搞$$代**码)网@搞代码gaodaimaW6lzEn

echo base64_decode('U0VMRUNUICogRlJPTSBnb29kcyBXSEVSRSBTaG9wTmFtZT0gJ+W6lzEn');

gbk 环境中: SELECT * FROM goods WHERE ShopName= ‘搴?1’
utf-8 环境中: SELECT * FROM goods WHERE ShopName= ‘店1’
显然你传入的就是 utf-8 编码的数据
你还当做 gbk 编码处理($conn->query(“set names ‘gbk'”);)能不出错吗?

哦,原来是这样,我对于编码一直都不是很了解。
好了,问题解决了,谢谢版主。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Fatal error: Call to a member function fetch_array() on a non-object 错误

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址