使用PDO的PDOStatement 执行多个语句发生错误

使用PDO的PDOStatement 执行多个语句发生错误。所有执行多个语句,就是指在sql语句中有分号";"在一个sql语句写多个语句。
	$table_name_user = "user";
	$sql_create_table_user = "
	DROP TABLE IF EXISTS {$table_name_user};
	CREATE TABLE {$table_name_user} (                    #创建名称为user的数据表
	    id int(11) unsigned NOT NULL auto_increment,     #保存用户的ID,无符号、非空、自动增长
	    username varchar(20) NOT NULL default '',        #保存用户名
	    userpwd varchar(32) NOT NULL default '',         #保存用户密码
	    PRIMARY KEY  (id)                                #将用户的id设置为主键
	)
	";

错误代码如下:

错误:SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

根据提示设置PDO::MYSQL_ATTR_USE_BUFFERED_QUERY属性。

$dbh->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

重启数据库和服务,结果还是不行。
最终解决方案:
将sql语句拆开,每个只有一句,然后分别执行。

	$table_name_user = "user";
	$sql_drop_table_use = "DROP TABLE IF EXISTS {$table_name_user}";
	$sql_create_table_user = "
	CREATE TABLE {$table_name_user} (                    #创建名称为user的数据表
	    id int(11) unsigned NOT NULL auto_increment,     #保存用户的ID,无符号、非空、自动增长
	    username varchar(20) NOT NULL default '',        #保存用户名
	    userpwd varchar(32) NOT NULL default '',         #保存用户密码
	    PRIMARY KEY  (id)                                #将用户的id设置为主键
	)
	";





























你可能感兴趣的:(sql,PHP,mysql)