`
GhostFromheaven
  • 浏览: 396998 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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

    博客分类:
  • PHP5
阅读更多
使用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设置为主键
	)
	";





























分享到:
评论

相关推荐

    PDO预处理语句PDOStatement对象使用总结

    使用预处理语句的好处在于,可以多次执行相同或相似的SQL语句,而只在每次执行时改变其中的参数。这种机制能够提高数据库操作的效率,并增强安全性,因为预处理语句可以有效防止SQL注入攻击。 在使用PDOStatement...

    php中pdo_informix

    通过`PDO::prepare()`创建预处理语句,然后使用`PDOStatement::bindParam()`或`PDOStatement::bindValue()`绑定参数,最后调用`PDOStatement::execute()`执行。 3. **执行SQL查询**:使用`PDOStatement::query()`...

    pdo.rar_PDO 封装

    执行预处理语句使用`execute()`方法。 5. **事务处理**:PDO支持事务,可以通过`beginTransaction()`开始一个事务,`commit()`提交,`rollBack()`回滚。在事务中执行的所有SQL操作要么全部成功,要么全部失败。 6....

    Php中的pdo函数库

    - `PDO->prepare()`:预处理SQL语句,返回一个PDOStatement对象。 - `PDO->query()`:执行SQL并返回PDOStatement对象。 - `PDO->lastInsertId()`:获取最后一次插入操作产生的自增主键值。 - `PDO->quote()`:为SQL...

    PHP中的PDO函数库

    1. **使用预处理语句**:预处理语句不仅提高了安全性,还可以提高性能,尤其是在多次执行相同SQL语句的情况下。 2. **错误处理**:使用异常处理机制可以更好地管理和记录应用程序中的错误。 3. **资源管理**:确保...

    PHP的PDO错误与错误处理

    对于语句对象引发的错误,可以使用`PDOStatement::errorCode()`或`PDOStatement::errorInfo()`。 2. **警告模式(PDO::ERRMODE_WARNING)**: 在警告模式下,除了设置错误码,PDO还会发出一个E_WARNING级别的PHP...

    pdo基础函数库

    - **应用场景**:对于需要多次执行相同 SQL 语句的情况,使用预处理语句可以提高效率并增强安全性。 7. **`PDO->query()`** - **功能**:执行一条 SQL 语句,并返回一个 PDOStatement 对象。 - **应用场景**:...

    全新的PDO数据库操作类php版(仅适用Mysql)

    PDO数据库操作类中包含多个方法进行数据库操作,比如`query`、`exec`、`fetchAll`、`fetch`、`fetchColumn`和`lastInsertId`。这些方法对PDO对象进行封装,方便进行查询和操作。 - `query`方法执行一个SQL语句并...

    PDO---PHP数据对象(数据抽象层) 学习笔记

    通过`PDO::prepare()`创建预处理语句,然后使用`PDOStatement::execute()`执行,可以安全地绑定参数。 **fetch方法**有不同的模式,如关联数组、索引数组和对象。`fetchColumn()`用于获取结果集中的一列,`...

    phpPDO+mysql单次增删改查多次增删改查百度分页多选删除

    在PHP开发中,数据库操作是不可或缺的一部分,而PDO(PHP Data Objects)提供了一种安全、高效的方式来连接MySQL数据库并执行SQL语句。本教程将详细讲解如何使用PDO进行单次和多次的增删改查操作,并结合百度分页...

    php使用PDO操作MySQL数据库实例

    此外,PDO还支持使用PDO属性和PDOStatement属性进行更高级的数据库操作和优化,例如,可以设置PDO属性来控制错误模式、获取数据库驱动信息等。 总的来说,使用PDO操作MySQL数据库提供了高效、安全、可移植的数据库...

    解析php5配置使用pdo

    此外,PDO还支持使用PDOStatement来存储和执行SQL语句,这可以提高执行效率和代码的可维护性。 知识点七:使用PDO进行数据库连接访问。 一旦PDO配置成功,开发者就可以使用PDO对象进行数据库操作。例如,连接数据库...

    PHP PDOStatement::execute讲解

    - **使用数组执行含有IN子句的预处理语句**:当SQL语句包含`IN`子句时,可以使用一个数组来传递多个值。 ```php $params = array(1, 21, 63, 171); $place_holders = implode(',', array_fill(0, count($params), '...

    PHP PDOStatement::getAttribute讲解

    PDOStatement是PDO库中的一个类,它代表预处理语句的实例,用于执行SQL查询并处理结果。`PDOStatement::getAttribute()`是这个类的一个方法,用于获取PDOStatement对象的属性值。在本文中,我们将深入探讨`...

    PHP PDOStatement::errorInfo讲解

    在PDO中,使用PDOStatement对象来执行SQL语句并处理结果集。 PDOStatement::errorInfo函数返回一个数组,包含三个元素,每个元素都对应不同的错误信息层级: - 数组的第一个元素(索引0)是SQLSTATE错误码。这是一...

    PDO::prepare讲解

    PDO::prepare PDO::prepare — 准备...为PDOStatement::execute()方法准备要执行的SQL语句,SQL语句可以包含零个或多个命名(:name)或问号(?)参数标记,参数在SQL执行时会被替换。 你不能在 SQL 语句中同时包含命名

    PHP PDOStatement::fetchAll讲解

    在使用PDOStatement::fetchAll之前,需要执行一个PDOStatement对象的execute()方法来执行SQL语句并获取查询结果。在PHP 5.1.0版本之后,该函数被引入,并且在PECL PDO扩展库版本0.1.0以上也是可用的。 该函数的参数...

Global site tag (gtag.js) - Google Analytics