我得到了这个代码:
$qstring = "SELECT COUNT(*) as count,name FROM schedules WHERE position = 'test' GROUP BY name ORDER BY count DESC";
if ($result = $mysqli->prepare($qstring)) {
/* execute query */
$result->execute();
/* bind result variables */
$result->bind_result($count,$name);
/* fetch value */
$result->fetch();
printf($count, $name);
/* close statement */
$result->close();
}
当通过phpMyAdmin运行时,上面的查询可以工作,但当使用上面的代码运行时,它不会返回任何内容(也不会抛出任何错误)。我也尝试过使用未准备好的语句,但得到了相同的空结果。所有函数都返回true,因此不会发生错误。
在准备好的语句中,您不将值放入查询中,而是稍后绑定它们。
在PHP中,将查询更改为:
SELECT COUNT(*) as count,name FROM schedules WHERE position = ? GROUP BY name ORDER BY count DESC";
然后在if ($result = $mysqli->prepare($qstring)) {
下面添加:
$result->bind_param('s', $var);
$var = 'test';
我的初始代码有两个问题。主要问题是php文件编码。由于我使用硬编码字符串进行测试,我忘记将文件编码更改为UTF-8,并且由于我在字符串中使用瑞典语特殊字符,这导致了未经处理的崩溃,因此结果为空。更改编码并重新保存php文件解决了这个问题。
此外,我上面的代码不会返回预期的结果。这是我的最后一个代码,它工作正常,并返回预期的结果:
$qstring = "SELECT COUNT(*) as count,name FROM schedules WHERE position = ? GROUP BY name ORDER BY count DESC";
if ($result = $mysqli->prepare($qstring)) {
$var = 'test';
$result->bind_param('s', $var);
/* execute query */
$result->execute();
$result = $result->get_result();
/* fetch value */
while ($row = $result->fetch_assoc())
{
echo $row['count'] ," ", $row['name'],"<br>";
}
/* close statement */
$result->close();
}