2013-03-09 17 views
2

我正在嘗試使用預準備語句來檢索MySQL表的內容。MySQLi獲取列名稱而不是列內容?

$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個不同的tutorialsmanuals我讀過,這個腳本應該重複通的臺「房間」列「數量」的內容,並打印出結果。 相反,它只是打印列自身的名稱(「數字」)多少行的時間。

這讓我氣瘋了!它爲什麼這樣做?

回答

3

使用反引號列名

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

他們也被稱爲'backtick's :) – hjpotter92 2013-03-09 18:28:50

+0

@DreamEater thanx :) – Hast 2013-03-09 18:31:17

+0

雖然刺是非法的,但反引號也是不需要的。如果他的列命名慣例是空間定向的,那麼是使用蜱,否則沒有必要。 – 2014-04-16 17:59:57

1

你的報價是錯誤的。實際上,你在查詢「爲表間的每個條目說讓我字符串‘數’

當你想引用現場或表名,使用斜引號代替:

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