mysql - php 预处理stmt语句问题
大家讲道理
大家讲道理 2017-04-11 09:59:55
[PHP讨论组]

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

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

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
高洛峰

mysqli 有get_result这个函数?

天蓬老师

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;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号