我在这里找不到错误:
function updateDocKeywords($keywords, $docId) {
try {
$query = 'UPDATE keywords SET :keyname = :keyvalue WHERE document_id = :docId';
$pdo = _openConnection();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->beginTransaction();
$pdoStatement = $pdo->prepare($query);
foreach($keywords as $keyname=>$keyval) {
var_dump($keyname,$keyval,$docId);
$pdoStatement->bindParam(':docId', $docId, PDO::PARAM_STR);
$pdoStatement->bindParam(':keyname', $keyname, PDO::PARAM_STR);
$pdoStatement->bindParam(':keyval', $keyval, PDO::PARAM_STR);
$pdoStatement->execute();
}
$pdo->commit();
return true;
}
catch(PDOException $e) {
$pdo->rollBack();
echo $e->getMessage();
return false;
}
}
在我得到的浏览器中:
string(5) "Fecha"
string(8) "20141122"
string(4) "5233"
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
在异常处理程序中,PHPStorms警告我$pdo
可能尚未定义,这是另一个问题,为什么会这样?
答案 0 :(得分:1)
替换它,
:keyval
$pdoStatement->bindParam(':keyvalue', $keyval, PDO::PARAM_STR);
进入
:keyvalue