MySQLi获取列名而不是列内容


MySQLi fetching column name instead of column contents?

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

我快疯了!它为什么要这样做?

使用反号作为列名

$sql = $mysqli->prepare("SELECT `number` FROM rooms
        WHERE 1 
        ORDER BY  `number` ASC 
        LIMIT ?, ? ");

你的引号错了。您实际上在您的查询中说:"对于桌子房间中的每个条目,请为我获取字符串'number'。

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

SELECT `field`, 'fixed string'
FROM   `table`