2

我正在尝试使用准备好的语句来检索 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 个不同的教程手册,这个脚本应该遍历表“房间”的“数字”列的内容并打印出结果。相反,它只是打印列本身的名称(“数字”)与行数一样多。

这让我发疯!为什么这样做?

4

2 回答 2

3

使用反引号作为列名

$sql = $mysqli->prepare("SELECT `number` FROM rooms
        WHERE 1 
        ORDER BY  `number` ASC 
        LIMIT ?, ? ");
于 2013-03-09T18:25:49.360 回答
1

你的报价是错误的。您实际上在查询中说过“对于桌子房间中的每个条目,请给我字符串'数字'。

当您想引用字段或表名称时,请改用斜引号:

SELECT `field`, 'fixed string'
FROM   `table`
于 2013-03-09T18:26:50.493 回答