这看起来很愚蠢。
这有效:
$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中启用模块?
谢谢,
史蒂夫