我已经搜索了这个问题,似乎出现了多种原因。我有以下代码排除了我看到的大部分主要原因:
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
// check connection
if ($conn->connect_error) {
trigger_error('Database connection failed: ' . $conn->connect_error, E_USER_ERROR);
}
if (function_exists('mysqli_query')) {
print('installed');
}
else{
print('not installed');
}
$sqlQuery="SELECT fname FROM `lists_users` WHERE `id`='2'";
echo $sqlQuery;
// Execute Query -----------------------------
$result = mysqli_query($conn, $sqlQuery);
if(!$result) {
echo "Cannot do query" . "<br/>";
exit;
}
$row = mysqli_fetch_row($result);
$count = $row[0];
if ($count > 0) {
echo "Query works";
} else {
echo "Query doesn't work" ."<br/>";
}
我得到的上述代码的结果是,Mysqli“已安装”,“查询无效”。我可以将上面回显的sql查询复制并粘贴到phpMyAdmin中,它会返回一行。
真的很难过这个问题可能是什么。
因此,根据YourCommonSense的建议,我提出了错误报告。我得到的错误是'mysqli class not found'。
所以做了一些谷歌搜索,并尝试了这段代码:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
....它返回'Phew我们拥有它!' :\
我可以运行“php -r”new mysqli();“从命令行运行。
答案 0 :(得分:2)
更改
SELECT fname FROM `lists_users` WHERE `id`='2'
到
SELECT fname FROM `lists_users` WHERE `id`=2
通常Ids不需要引号。
尝试这种方法
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* Prepare an insert statement */
$sqlQuery = "SELECT fname FROM `lists_users` WHERE `id`=?";
$stmt = mysqli_prepare($conn, $sqlQuery);
mysqli_stmt_bind_param($stmt, "i", 2);
/* Execute the statement */
if (mysqli_stmt_execute($stmt)) {
echo "Query works";
} else {
echo "Query doesn't work" ."<br/>";
}
/* close statement */
mysqli_stmt_close($stmt);
/* close connection */
mysqli_close($conn);
答案 1 :(得分:2)
在您的下方查询
SELECT fname FROM `lists_users` WHERE `id`='2'
您正在尝试获取 fname ,我假设它是String / Varchar类型。 在您的代码后面的行
$row = mysqli_fetch_row($result);
将返回Array和$ row [0]将获取fname(String Type)值并将其存储在$ count变量中 现在在String语句中将String与int进行比较会将String转换为int值,在我们的例子中&#34; 0&#34;并且if语句会给出错误的结果。
如果你想获取Count使用mysqli_num_rows函数(http://www.php.net/manual/en/mysqli-result.num-rows.php)。
这应该给出正确的结果。
答案 2 :(得分:0)
如果您使用mysqli程序样式,请使用mysqli_connect()
,而不是new mysqli()
。