Drupal 8 PDO Prepared Statements bindValue错误

时间:2016-02-08 15:55:08

标签: php mysql drupal pdo

我在查询时遇到问题。此查询会导致以下错误。

  

PDOException:SQLSTATE [HY093]:参数号无效:没有绑定参数

 var data = { app_id: "myappid123"
    caption: "caption"
    description: "description"
    href: "http%3A%2F%2Fwww.mySite.info%2Fblog%2Fpost"
    method: "share"
    name: "name"
    picture: "http://my.png"
    redirect_uri: "http://www.mySite.info/"
    }
     FB.ui(data, function (response) {
            });

参数

$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

问题为什么我不能将任何参数或值绑定到PDO预处理语句?

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

1 个答案:

答案 0 :(得分:1)

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

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

然后使用自定义查询将起作用。并且你不会得到没有参数的绑定错误