2014-09-30 112 views
-1

我嘗試使用下面的事先準備好的聲明:結合事先準備好的聲明,並DISTINCT mysqli的通話

$stmt = $mysqli->prepare("SELECT DISTINCT primaer FROM oevelser"); 
    $stmt->bind_param("s", $primary); 
    $stmt->execute(); 

當使用DISTINCT,我希望只得到一個結果PR。行,從而很好地匹配變量類型和變量的數量,但我得到的錯誤:「變量數量不匹配準備語句中的參數數量」

任何想法?

+0

對不起,意在寫道:當命名一個不同的列,我期望結果公關。行 - DISTINCT與它無關,我猜... – 2014-09-30 18:37:24

+0

您的查詢中沒有任何參數。刪除'bind_param'並重試。 – DerVO 2014-09-30 18:38:43

+0

[**準備好的陳述像這樣工作... **](http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php) - 您沒有使用佔位符準備好的陳述是關於什麼的; ***這就是爲什麼你的代碼失敗了。***看看手冊和Google的「mysqli prepared statements examples」。這與「答案」一樣好。 – 2014-09-30 18:56:50

回答

0

當您的查詢沒有指定參數時,您正在傳遞參數。一個有效的將看起來像這樣:

$stmt = $mysqli->prepare("SELECT DISTINCT primaer FROM oevelser WHERE primary=?"); 
$stmt->bind_param("s", $primary); 
$stmt->execute(); 
+0

@ksealy,謝謝爲了讓我在正確的路徑上 - 實際上我需要刪除bind_param,因爲我的查詢不需要一個。 – 2014-10-01 07:21:33