![](/img/trans.png)
[英]Failed to run query: SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near ')'
[英]'PDOException' with message 'SQLSTATE[07002]: [Microsoft][SQL Server Native Client 11.0]COUNT field incorrect or syntax error' in …/db.php:46
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[07002]: [Microsoft][SQL Server Native Client 11.0]COUNT field incorrect or syntax error' in .../db.php:46 Stack trace: #0 .../db.php(46): PDOStatement->execute() #1 .../tests/testDb.php(12): ReportsDB->runSP('CALL ...', Array) #2 {main} thrown in .../db.php on line 46
我正在處理的某些代碼出現此錯誤。 我在調試此特定錯誤消息時遇到問題。
這是封裝第46行的內容(我將突出顯示實際的行)。
public function runSP ($sp, array $args) {
$returnParams = array();
if ($sp) {
$s = explode(" ", $sp);
if ($s[0] != "CALL") {
$sp = "CALL " . $sp;
}
$stmt = $this->_db->prepare($sp);
if (sizeof($args) > 0) {
for ($i = 0; $i > sizeof($args); $i++) {
$stmt->bindParam($i, $args[$i]["value"], $args[$i]["type"]);
$t = explode("|", $args[$i]["type"]);
if ($t[1] == "PDO::PARAM_INPUT_OUTPUT") {
$returnParams[] = $args[$i]["value"];
}
}
Line 46 $stmt->execute();
return $returnParams;
} else {
}
}
我之前已經做過,也有同樣的錯誤。 這是我解決我問題的方法。
1.)查看您的查詢。 確保您未調用表中實際上不存在的列名。
2.)列名的數量和占位符的數量必須匹配。
3.)在for循環中,而不是將counter($ i)初始化為0,而是將其初始化為1。這樣說,在循環的第一次迭代中,您將綁定數組的第一個值($ args [$ i-1] [“ value”])移至查詢中的第一個占位符。 因此應該是:
for ($i = 1; $i <= count($args); $i++){
$stmt->bindParam($i, $args[$i - 1 ]["value"], $args[$i - 1]["type"]);
}
希望這可以幫助。 它為我工作。 祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.