2014-01-05 108 views
0

我的代碼有問題,我不明白! 這裏是我的代碼的一部分有問題execute()SQLSTATE [HY093]:無效的參數編號

$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
$sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM NEWS order by " . mysql_real_escape_string($order) . " LIMIT :numROws"; 
$st = $conn -> prepare($sql); 
$st -> bindValue(":numRows", $numRows, PDO::PARAM_INT); 
$st -> execute(); 

如果不清楚請告知。

+1

注意,所有'mysql_ *'函數已經廢棄,包括'mysql_real_escape_string()'。你應該重新思考你的邏輯,並使用'switch'來在你的查詢中插入正確的'ORDER BY'。 – Mike

回答

1

看起來你可能有一個簡單的錯字。

在SQL,你寫:

...LIMIT :numROws"; 

但你要綁定:

$st -> bindValue(":numRows", $numRows, PDO::PARAM_INT); 

PHP是大小寫敏感的,所以:和numRows行:是numRows行不一樣。

0

取代:

$st -> bindValue(":numRows", $numRows, PDO::PARAM_INT); 

有:

$st -> bindValue(":numROws", $numRows, PDO::PARAM_INT); 
相關問題