Mysql 使用事先准备好的语句中不支持的信息模式,但使用I';我没有使用准备好的支架?
查询:Mysql 使用事先准备好的语句中不支持的信息模式,但使用I';我没有使用准备好的支架?,mysql,pdo,Mysql,Pdo,查询: $PDO->query('use `INFORMATION_SCHEMA`'); 在以下情况下失败: SQLSTATE[HY000]:一般错误:2030预处理语句协议尚不支持此命令。 但是我没有将prepared语句与prepare()+execute()一起使用。对于这个查询,我使用的是query()方法。我如何解决这个问题 版本信息: PHP版本:5.5.9-1ubuntu4 mysql版本:14.14发行版5.5.35,适用于使用readline 6.3的debian li
$PDO->query('use `INFORMATION_SCHEMA`');
在以下情况下失败:
SQLSTATE[HY000]:一般错误:2030预处理语句协议尚不支持此命令。
但是我没有将prepared语句与prepare()
+execute()
一起使用。对于这个查询,我使用的是query()
方法。我如何解决这个问题
版本信息:
PHP版本:5.5.9-1ubuntu4
mysql版本:
14.14发行版5.5.35,适用于使用readline 6.3的debian linux gnu(x86_64)
我认为问题在于您试图在PDO->query方法中使用“use”命令。“use”命令通常在使用MySQL命令行工具时使用,用于选择数据库
创建PDO时,通常指定要使用的数据库。以以下为例:
$DBH = new PDO("mssql:host=$host;dbname=$dbname, $user, $pass");
创建数据库处理程序PDO需要四件事:
- 主人
- 数据库名称
- 用户名
- 密码
$DBH = new PDO("mssql:host=$host;dbname=INFORMATION_SCHEMA, $user, $pass");
希望这能解决您的问题。我无法重现这种行为。您使用的是什么PHP版本?您使用的是本机PDO还是某个类对其进行了扩展?为问题添加了版本。您可以始终使用exec()作为解决方法。。。但我想知道是什么导致了这个错误……这是旧版本的MySQL错误:您是否尝试过用PDO::setAttribute更改PDO::ATTR_EMULATE_?