0
我試圖用這個PHP PDO準備語句來運行SQL查詢時在SQL查詢中使用至少包括:使用PHP PDO預處理語句
$stmt = $pdo_conn->prepare("SELECT *, LEAST(:col_list) as num FROM callplandata WHERE number LIKE :number HAVING num != 0 ");
$stmt->execute(array(':col_list' => implode(',',$column_list), ':number' => '%'.$_POST["prefix"].'%'));
但其顯示此錯誤消息:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1582 Incorrect parameter count in the call to native function 'LEAST'' in /home/integra/public_html/included_pages/call_tarrif_search.php:62 Stack trace: #0 /home/integra/public_html/included_pages/call_tarrif_search.php(62): PDOStatement->execute(Array) #1 /home/integra/public_html/index.php(119): include('/home/integra/p...') #2 {main} thrown in /home/integra/public_html/included_pages/call_tarrif_search.php on line 62
我做錯了什麼?
它使用正常的MySQL查詢,我剛剛改變它是一個準備好的語句 – user2710234
@ user2710234:似乎你不明白什麼佔位符是:'最少(:col_list)'意味着':col_list'會被替換爲** SINGLE **字符串文字。你不能在那裏傳遞'a,b,c',並期望它變成'最小(a,b,c)',它將是'最小('a,b,c')'。準備好的語句佔位符要與**值**一起使用,而不能與對象一起使用。所以列名應該手動插入到查詢中,只需要連接 – zerkms
那麼可以使用LEAST(''。implode(',',$ column_list)。「') - 我對PDO非常陌生,準備好的陳述,所以請耐心等待,如果我有點愚蠢:) – user2710234