【发布时间】:2015-09-27 21:16:52
【问题描述】:
我正在尝试运行一个使用 mysqli 库的 PHP 脚本,但在运行 WLAMP PHP 5.14 的机器上它运行良好时,它在虚拟主机服务器上没有获取任何结果。
您能否告诉我问题是否与 mysqli 有关,以及是否有办法使其适用于我的情况?
我想让作品看起来像这样的线条:
$sql = "call sp_give_me_data(null,null,null);";
if (!$mysqli->query($sql)) {
die('Invalid query: ' . mysql_error());
} else {
$result = $mysqli->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$datainfo[] = $row;
}
$output = json_encode($datainfo);
echo utf8_encode($output);
} else {
echo "0";
}
}
正如我所说,它在支持 PHP 5.3-5.5 的主机上获取“0”记录,并在我的机器上获取正确数量的记录。与远程数据库的连接(在两种情况下都相同)似乎也成功了。
感谢您的洞察力。
更新
我更改了我的代码,所以现在我只发送一次查询:
mysqli_set_charset($mysqli,"utf8"); //utf-8 accents query
$result = $mysqli->query($sql);
if (!$result) {
die('Invalid query: ' . mysql_error());
} else {
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$datainfo[] = $row;
}
//utf-8 accents unescaping to be shown correctly
$output = json_encode($datainfo,JSON_UNESCAPED_UNICODE);
echo $output;
} else {
echo "0";
}
}
现在可以了。谢谢!
【问题讨论】:
-
为什么要发送两次查询?
-
另外,如果出现问题,您正在使用
mysql_error();你应该改用$mysqli->error,我认为 -
@VolkerK,你给了我一个关于为什么它不工作的线索我像编辑一样更改了我的代码,现在正在工作。如果您能告诉我为什么在 PHP 5.3-5.5 上原始查询不起作用,那就太好了?把你的评论作为答案,我会给你正确的答案选择。谢谢。
-
发送两次查询只是多余的,我相信在逐行测试代码之前丢弃这些东西是个好主意。您没有测试实际用于检索数据的(第二个)查询。所以也许它失败了 - 一些我不知道的存储过程...... ;-)
-
无论如何@VolkerK,你最初的提示帮助我解决了这个问题。如果您可以将其发布为答案,那么我可以给您加分。谢谢!
标签: php stored-procedures mysqli