问题已解决,谁tm能想到,竟然是字符编码问题,忘记设置字符编码,赋值遇到异常编码时,可能造成了内存泄露,具体可看我知乎上的自答。感谢各位的帮助和建议!
我在phpsdudy上用的是5.4.5
,正常运行,切换到5.5.38
或5.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.5
4个版本,我就选了个中间的,就是怕版本不兼容,谁知道。。。)
尝试把版本改成
5.4
以上再看看。刚才看了官方文档发现了这个 PHP: mysqli_stmt::get_result
并且我自己在官方文档上找了个例子试了一下:
出现上面这个错误。