首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PDO扩展PDO::ATTR_AUTOCOMMIT 出坑记

问题描述 我自己以swoole扩展为基础,封装了一个异步任务服务器框架,数据库操作使用pdo扩展,但是在插入数据的时候,出现了异常情况,具体状况如下: MyISAM 表引擎的insert正常插入,没有问题...Innodb表引擎查询都可以的,但是插入失败,出现回滚现象,auto_increment字段变化,表的rows变化,lastInsertId正常返回 解决过程 监控mysql日志,查看状态 进入mysql...直接写了个简单的mysql pdo 连接数据库,并且插入数据到innodb表里面,结果没有任何问题,成功了,然后我就想到pdo里面有个参数PDO::ATTR_AUTOCOMMIT,是不是他在作怪?...使用getAttribute(PDO::ATTR_AUTOCOMMIT)) 获取他的值,打印,发现是1,证明是自动提交事务的 然后在我封装的框架里面,我打印了他的值,发现是0,问题找到 那么,在插入的时候...PDO::ATTR_AUTOCOMMIT为1 ,在启动的swoole-httpserer里面是0,我没有继续深入。

93420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库(PDO 对象常用方法)

    PDO中包含三个预定义的类 PDO中包含三个预定义的类,它们分别PDO、PDOStatement 和 PDOException。...一、PDO PDO->beginTransaction() — 标明回滚起始点 PDO->commit() — 标明回滚结束点,并执行SQL PDO->rollBack() — 执行回滚 PDO->__...语句,并返回所影响的条目数 PDO->getAttribute() — 获取一个“数据库连接对象”的属性 PDO->getAvailableDrivers() — 获取有效的PDO驱动器名称 PDO->...lastInsertId() — 获取写入的最后一条数据的主键值 PDO->prepare() — 生成一个“查询对象” PDO->query() — 处理一条SQL语句,并返回一个“PDOStatement...详解2) PDO中的事务 PDO->beginTransaction(),PDO->commit(),PDO->rollBack()这三个方法是在支持回滚功能时一起使用的。

    63840

    PHP中用PDO查询Mysql来避免SQL注入风险的方法

    1、PDO配置 使用PDO扩展之前,先要启用这个扩展,PHP.ini中,去掉"extension=php_pdo.dll"前面的";"号,若要连接数据库,还需要去掉与PDO相关的数据库扩展前面的";"号...extension=php_pdo.dll extension=php_pdo_mysql.dll 2、PDO连接mysql数据库 $dbh = new PDO("mysql:host=localhost...2) 因为不同数据库对返回的字段名称大小写处理不同,所以PDO提供了PDO::ATTR_CASE设置项(包括PDO::CASE_LOWER,PDO::CASE_NATURAL,PDO::CASE_UPPER...::prepare()主要是预处理操作,需要通过$rs->execute()来执行预处理里面的SQL语句,这个方法可以绑定参数,功能比较强大(防止sql注入就靠这个) PDO::lastInsertId...; echo $pdo -> lastinsertid(); } ?

    2.3K80
    领券