execute()SQLSTATE [HY093]:参数号无效

时间:2014-01-05 06:32:23

标签: php mysql pdo

我的代码有问题,我不明白! 这是我的代码中有问题的部分

$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();

如果不清楚请告诉。

2 个答案:

答案 0 :(得分:1)

看起来你可能有一个简单的拼写错误。

在你的SQL中,你写道:

...LIMIT :numROws";

但是你有约束力:

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

PHP区分大小写,因此:numROws和:numRows不相同。

答案 1 :(得分:0)

取代:

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

使用:

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