我正在制作一个处理我所制作的应用程序的在线高分榜的网站。该站点已经启动并运行,使用预准备语句从用户应用程序插入名称和分数。但是,在使用预准备语句从数据库中获取数据时,我遇到了一个问题。这是我获取显示的代码:
$display = $db->prepare("SELECT * FROM highscores ORDER BY score DESC");
$display->execute();
$result = $display->get_result();
$i = 1;
while ( $row = mysqli_fetch_array($result) ) {
if ($i % 2 != 0) {
echo "<div id = 'odd'>";
echo "<div id = 'l'>" . $i . "</div>";
echo "<div id = 'r'>" . $row['score'] . "</div>";
echo "<div id = 'c'>" . $row['name'] . "</div>";
echo "</div>";
}
else {
echo "<div id = 'even'>";
echo "<div id = 'l'>" . $i . "</div>";
echo "<div id = 'r'>" . $row['score'] . "</div>";
echo "<div id = 'c'>" . $row['name'] . "</div>";
echo "</div>";
}
$i++;
}
$display->close();
$db->close();
这在我用于测试的本地服务器上运行正常。但是,我无法使用此功能,因为get_result()
仅适用于我的网站服务器不支持的mysqlnd
。如果有人能指出我正确的方向,或者就此事给我一些建议,我会很高兴。
在这种情况下是否甚至需要使用预准备语句?
答案 0 :(得分:2)
回答你的问题:“在这种情况下是否甚至需要使用准备好的声明?”
答案是否定的。除非您的查询来自SELECT
上的用户输入,否则您无需进行准备;只需使用标准查询。
另外,正如我在评论中所述,请参阅以下有关使用get_result()
的替代方法的答案。
以下是PHP mysqli
的准备语句链接: