2014-04-27 88 views
0

我想從我的數據庫表'成員'使用預處理調用檢索一個結果。MySQLi準備結果不如預期

$favid = 1; 
$type = "favdeal"; 
$action = 1; 
$user_id = 1; 

$stmt = $mysqli->prepare("SELECT ? FROM members WHERE id=?"); 
$stmt->bind_param('ss', $type, $user_id); 
$stmt->execute(); 
$stmt->bind_result($favs); 
while ($stmt->fetch()) { 
    print($favs); 
} 
$stmt->close(); 

這是我設法得到任何一種結果的唯一方法。

該表有一個名爲'favdeal'的列,其值爲'2'。 打印結果返回列的名稱而不是值。

所以我的問題是如何獲得值'2',而不是列的名稱?

+4

您不能綁定表和列''SELECT期?選擇一個實際的列。或者如果你想使用一個變量,可以'SELECT $ type'。 –

+0

啊謝謝,我沒有意識到我不能那樣做。 – ChristopherStrydom

+0

不客氣。 –

回答

1

不能從做SELECT你在SELECT ?有綁定列(或表)。

  • 選擇一個實際的列。

或者,如果你想動態地做到這一點,你需要使用一個變量。

例如:SELECT $type < =這是允許的。

但是,當使用WHERE子句時,列名可以綁定。

實施例:SELECT column FROM table WHERE column=?
您目前使用=>WHERE id=?

上請教手動bind_param()


腳註:

如果你碰巧使用MySQL的保留字(它可能發生),則需要使用反引號來包裝你列的變量。

例如:(如果使用$type="from";)「from」是一個保留字。

SELECT `$type` FROM members WHERE id=? 

對於MySQL的列表保留字,請訪問以下網頁: