在预准备语句中不支持使用INFORMATION_SCHEMA,但我没有使用预准备语句?

时间:2014-05-06 07:50:39

标签: mysql pdo

查询:

$PDO->query('use `INFORMATION_SCHEMA`');

失败:

SQLSTATE[HY000]: General error: 2030 This command is not supported in the prepared statement protocol yet.

但我没有使用prepare() + execute()的预准备语句来处理此查询,我正在使用query()方法。我该如何解决这个问题?

版本信息

PHP版本:5.5.9-1ubuntu4

mysql版本:14.14 Distrib 5.5.35, for debian-linux-gnu (x86_64) using readline 6.3

1 个答案:

答案 0 :(得分:0)

我认为问题在于您尝试在PDO->查询方法中使用“use”命令。当您使用MySQL命令行工具并且它用于选择数据库时,通常使用“use”命令。

创建PDO时,通常会指定要使用的数据库。请看以下示例:

$DBH = new PDO("mssql:host=$host;dbname=$dbname, $user, $pass");

创建数据库处理程序PDO所需的四件事是:

  • 主机
  • 数据库名称
  • 用户名
  • 密码

您正在做的事情(我无法分辨,因为您没有列出您的PDO声明声明)正在连接到另一个数据库,然后尝试执行查询以切换数据库。我不认为PDO的目的是为了做到这一点。

如果要连接到INFORMATION_SCHEMA数据库,则应在PDO中创建或创建另一个PDO。

$DBH = new PDO("mssql:host=$host;dbname=INFORMATION_SCHEMA, $user, $pass");

希望这能解决你的问题。

相关问题