php - Drupal 8 PDO 准备语句绑定(bind)值错误

标签 php mysql drupal pdo

我在处理这个查询时遇到了问题。此查询导致以下错误。

PDOException: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

$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)]);
}

问题为什么我不能将任何参数或值绑定(bind)到 PDO 准备语句?

我正在使用 Drupal 8,我相信他们的连接会取代 PDO 默认驱动程序。

最佳答案

Drupal 8 用 Drupal 用来插入、更新、准备语句等的自定义驱动程序替换了默认的 PDO 驱动程序...这些驱动程序覆盖了默认操作。因此,如果您想要一个完整的自定义查询,您将需要独立于 Drupal 设置自己的连接并使用它。

$dsn = 'mysql:host=localhost;dbname=drupal';
$username = 'username';
$password = 'password';
$connection = new PDO($dsn, $username, $password);

然后使用自定义查询就可以了。你不会得到 no parameters were bound 错误

关于php - Drupal 8 PDO 准备语句绑定(bind)值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35273776/

相关文章:

javascript - 根据推荐人更改表单选择

php - 限制 Twig 循环

php - 显示特定类别 laravel 5

Drupal 7 上的 Drupal Commerce?

php - 最有效地在mysql数据库中搜索关键字

php - 使用mysql查询统计连续缺勤总数和百分比计算

mysql - 事件记录二级关联和按计数分组

mysql - 如何减少对这些 MySQL 子查询的需求?

drupal - 在 drupal 中创建我自己的权限

德鲁巴。从当前 url 获取路径别名,无需安装的文件夹参数