我收到了这段代码:
$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,因此不会发生错误。
答案 0 :(得分:0)
在准备好的陈述中,您不要将值放入查询中,而是稍后将其绑定。
在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';
答案 1 :(得分:0)
在Joe Rose的回复之后,我做了他建议的修改,但这还不够。
我的初始代码存在双重问题。主要问题是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();
}