我遇到了這個查詢的麻煩。此查詢導致以下錯誤。Drupal 8 PDO Prepared Statements bindValue錯誤
PDOException:SQLSTATE [HY093]:無效的參數號:無參數的約束
$sql = "INSERT IGNORE table SET user_id = :uid";
if ($con = $connection->prepare($sql)) {
$con->bindValue(':uid', intval($this->uid), PDO::PARAM_INT);
$con->debugDumpParams();
$con->execute();
}
參數
Params: 1
Key: Name: [4] :uid
paramno=-1
name=[4] ":uid"
is_param=1
param_type=1
查詢工作。
$sql = "INSERT IGNORE table SET user_id = :uid";
if ($con = $connection->prepare($sql)) {
$con->execute([':uid' => intval($this->uid)]);
}
問題爲什麼我不能綁定任何參數或值的PDO預處理語句?
我正在使用Drupal 8,我相信他們的連接取代了PDO默認驅動程序。
http://php.net/manual/en/pdostatement.bindparam.php –
我建議在'execute'中傳遞參數,除非你使用'blobs' 。它工作非常可靠。 –
@RyanVincent它可能與Drupal的自定義驅動程序有關。我用幾種不同的方式改變了這個查詢。有沒有辦法調試PDO語句並獲得驅動程序配置? – Neoaptt