带有命名参数和bindParam的PHP PDO语句不起作用

时间:2017-05-08 20:01:57

标签: php mysql pdo

这看起来很愚蠢。

这有效:

$db = "nameone";
$coll = "utf8_bin";
$sth = $this->dbh->prepare("CREATE DATABASE $db COLLATE $coll");
$sth->execute();

但是这会产生以下错误:$ sth-> errorInfo [0] => 42000. $ sth-> errorInfo [2] =>您的SQL语法有错误;查看与您的MariaDB服务器版本相对应的手册,以获得在' nametwo'附近使用的正确语法。 COLLATE' utf8_bin''在第1行。

$db = "nametwo";
$coll = "utf8_bin";
$sth = $this->dbh->prepare('CREATE DATABASE :db COLLATE :coll'); // Changing to double quotes does not matter. Get same error.
$sth->bindParam(':db', $db);
$sth->bindParam(':coll', $coll);
$sth->execute();

我错过了什么会导致带有命名参数的第二个代码和bindParam这样的错误。请注意,我使用的是数据库名称和排序规则类型,而不是表名和列名,并且错误与语法相关。是否需要在php.ini中启用模块?

谢谢,

史蒂夫

0 个答案:

没有答案