【发布时间】:2014-01-04 17:43:17
【问题描述】:
下面这个查询在 localhost (PHP/5.4.22)
<?php
global $db;
$query = $db->query("SELECT * FROM player WHERE playerID = '181783'") or die(mysqli_error($db));
foreach ($query as $row) {
$fName = $row['fName'];
echo "First Name: " . $fName;
}
?>
在我的虚拟主机上怎么样 (PHP/5.3.28)
这个查询返回
名字:名字:名字:名字:名字:
目前只有 1 个结果返回其中 playerID = 181783,并且应该回显名称“Mario”
当我在我的虚拟主机上运行如下查询时,它可以正常工作并与 Mario 相呼应。
$query2 = $db->query("SELECT * FROM player WHERE playerID = '181783'");
$result = $query2->fetch_object();
echo $result->fName;
所以这一定意味着数据库连接设置正确,因为 query2 在同一页面上并且正在工作,只是由于某种原因,查询一个它不会回显结果,而是显示 'First Name:' 5 次。
对于我在整个站点中使用的所有 foreach() 函数都是这样,所以我不能只查询 2。
总之,这两个查询都在本地主机上工作,当上传到我的网络主机时,只有查询 2 工作。
尽管有 error_reporting(E_ALL); 但没有错误正在启用
我该怎么办? 谢谢。
编辑-数据库配置
//MySQLI configuration
$_CONFIG['mysql']['hostname'] = 'localhost';
$_CONFIG['mysql']['username'] = '#';
$_CONFIG['mysql']['password'] = '#';
$_CONFIG['mysql']['database'] = '#';
//Initialize MySQLi connection
$db = new mysqli($_CONFIG['mysql']['hostname'], $_CONFIG['mysql']['username'], $_CONFIG['mysql']['password'], $_CONFIG['mysql']['database']);
if ($db->connect_errno) {
die("MySQLi error: ".$db->connect_error);
}
【问题讨论】:
-
print_r($row)说什么?您确定两台服务器上的表数量相同吗? -
也许在这里显示你的数据库配置文件会有所帮助。
-
print_r($fName) 再次没有返回任何内容,我已将我的数据库配置添加到帖子中。
-
数据库配置不是问题,检查我的回答:
Mysqli_Result在 5.4 版之前没有实现Travesrable,您的网络服务器正在运行 5.3。就这样。使用while循环可以解决问题,升级服务器也是如此