php预处理语句的get_result()有版本差异吗?

问题已解决,谁tm能想到,竟然是字符编码问题,忘记设置字符编码,赋值遇到异常编码时,可能造成了内存泄露,具体可看我知乎上的自答。感谢各位的帮助和建议!

我在phpsdudy上用的是5.4.5,正常运行,切换到5.5.385.3.29都歇菜,上传到我的阿里云虚拟主机上,不管怎么设置版本,没卵用。直接报500,查BUG都不知道从哪下手。

经过我的二分法删代码大法,我发现,bug就是在一个预处理语句上:

$sql = "select * from `$table_a` where `title` like ? or `content` like ? $order_sql limit " . $pageSize * ($currentPage - 1) . ", $pageSize";
$stmt = $mysqli -> prepare($sql);
$temp = "'%$searchContent%'";
$stmt -> bind_param('ss', $temp, $temp);
$stmt -> execute();
$result = $stmt -> get_result();  // 就是这句!!!按我的理解,他就算数据库里没找到东西,顶天给我个error,不能500吧?

删掉这句,一切ok,加上就报500,路过大神帮忙看看呗。

(因为阿里云虚拟主机上只有5.2-5.54个版本,我就选了个中间的,就是怕版本不兼容,谁知道。。。)

阅读 3.8k
3 个回答

尝试把版本改成 5.4 以上再看看。


刚才看了官方文档发现了这个 PHP: mysqli_stmt::get_result

Available only with mysqlnd.

并且我自己在官方文档上找了个例子试了一下:

Fatal error: Call to undefined method mysqli_stmt::get_result() in ...

出现上面这个错误。

服务器会对异常的响应码记录的
查一下服务器的error日志就好了

问题已解决,谁tm能想到,竟然是字符编码问题,忘记设置字符编码,赋值遇到异常编码时,可能造成了内存泄露,具体可看我知乎上的自答。感谢各位的帮助和建议!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题