php Pdo连接数据库插入一条数据出现两条的bug
黄舟
黄舟 2017-04-11 09:46:07
[PHP讨论组]

1,我在使用pdo连接mysql的时候,插入数据但是出现两条一样的数据:

$dsn    =   sprintf("mysql:host=%s;dbname=%s;charset=utf8", $host, $dbName);
$_dbHandle    =   new PDO($dsn, $user, $password, $option);
$sql = "insert into `name` (`age`) values (18)";
$_dbHandle->exec($sql);
//这样插入一次数据,但是数据库会存在两条数据;

求助,求助!

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
高洛峰

这个问题已经找到答案了~原因如下:

由于nginx的 rewrite问题,在location {}模块中,错误的语法导致项目被重复执行了两次,但是由于是同样的执行操作,我们所有的断点调试都无法检出这个问题;

天蓬老师

建议改成PDO预处理参数化查询:

$sql = "insert into `name` (`age`) values (18)";
$stmt = $_dbHandle->prepare($sql);
$stmt->execute();
echo $stmt->rowCount(); //查询中受影响(改动)的行数,插入失败时为0
echo $_dbHandle->lastInsertId(); //插入的自增ID,插入失败时为0
天蓬老师

亲说执行了两遍嘛?首先你这点代码我看不出来啥。 用debug_backtrace函数检查一下,试试,另外连接数据库我们都用 Singleton 单例(单元素)模式实现 来实现的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号