php 预处理stmt语句问题

我写的一个注册用户页面,然后后台用stmt预处理,查询内容.我在本地服务器全部测试好了
放到阿里云虚拟主机后就无法执行stmt语句.
我本地服务器 php版本5.6 阿里云5.5 数据库用的是同一个.
代码如下
图片描述

就是首先查询用户注册的用户名是否存在,执行到get_result()这里就开始停了.我也不知道错误信息.我是echo一句句测的.
我本地用的也是这个代码.数据库也是一样.本地就是ok的.服务器那边只要发送ajax信息.就返回500.
本地就能正常返回.如果用户名存在就返回{"statu":3}.
图片描述

如果我用普通查询服务器那边是没问题的.
在线等!

阅读 5.2k
2 个回答

http://php.net/mysqli
get_result 仅在 mysqlnd 下可用.
虽然PHP从5.3就内置了mysqlnd(php-src/ext/mysqlnd),
但仍有一些Linux发行版构建新版PHP时使用libmysql.
mysqlnd是PHP官方自己实现的MySQL驱动.
libmysql是MySQL官方发布的C/C++接口驱动.

虚拟主机上你更改不了PHP环境,那你只能改代码.

$stmt = $db->prepare('SELECT id, title, content FROM posts WHERE id = ?');
$stmt->bind_param('i', $id);
$stmt->execute();
//如果能用get_result,一句就能返回
return $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
//如果不能用get_result,那就得改成下面
$stmt->bind_result($id, $title, $content);
$stmt->store_result();
$rows = array();
$i = 0;
while ($stmt->fetch()) {
    $rows[$i]['id'] = $id;
    $rows[$i]['post_title'] = $title;
    $rows[$i]['post_content'] = $content;
    $i++;
}
$stmt->free_result();
$stmt->close();
return $rows;

mysqli 有get_result这个函数?

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