我正在尝试使用预准备语句来检索MySQL表的内容。
$sql = $mysqli->prepare("SELECT 'number' FROM rooms
WHERE 1
ORDER BY 'number' ASC
LIMIT ?, ? ");
$n1 = 0;
$n2 = 30;
$sql->bind_param('ii', $n1, $n2);
$sql->execute();
$sql->bind_result($number);
while ($sql->fetch()){
printf($number);
}
根据我读过的近3个不同的tutorials和manuals,这个脚本应该通过表“rooms”的列“number”的内容进行迭代并打印出结果。 相反,它只打印出列本身的名称(“数字”),其行数与行数一样多。
这让我很生气!它为什么要这样做?
答案 0 :(得分:3)
使用列名称的反引号
$sql = $mysqli->prepare("SELECT `number` FROM rooms
WHERE 1
ORDER BY `number` ASC
LIMIT ?, ? ");
答案 1 :(得分:1)
你的报价错了。你实际上在你的查询中说“对于桌子房间的每个条目都给我字符串'数字'。
如果要引用字段或表名,请改用斜引号:
SELECT `field`, 'fixed string'
FROM `table`