PHP向MySQL写入数据失败排查:代码执行后数据库无变化
MySQL+PHP插入数据无反应的排查与解决
我之前也碰到过几乎一模一样的坑!先给你还原下问题场景,再讲解决办法:
问题描述
我尝试用PHP向MySQL数据库写入数据,运行代码后查看数据库,完全没有任何变化。这段代码只是练习用,没有部署到生产环境:
<?php $myPDO = new PDO('mysql:host=localhost;dbname=user_information','root', 'root'); $result = $myPDO->query("INSERT INTO user_information (first_name, last_name, type_text) VALUES ('John', 'Doe', 'john@example.com')"); ?>
奇怪的是,直接在MySQL客户端里执行这条INSERT语句,数据能正常插入,但通过PHP执行就完全没效果。
问题根源与解决
折腾了好一会儿才找到问题:PDO连接字符串里的dbname参数写错了!
原来我把数据库名称和表名搞混了——连接时dbname指定的应该是你要操作的数据库的名字,而我误写成了表名user_information。这就导致PHP连接到了错误的数据库(甚至可能是一个不存在的数据库,默认情况下PDO不会主动抛出这类错误),自然没法把数据插入到目标表中。
修正连接字符串,把dbname改成实际的数据库名称后,问题就解决了。
小建议:开启PDO错误提示
练习的时候建议开启PDO的异常错误模式,这样遇到连接错误、SQL语法错误时,会直接抛出异常,不会默默失败,能帮你更快定位问题:
<?php $myPDO = new PDO('mysql:host=localhost;dbname=你的数据库名','root', 'root'); // 开启异常错误模式 $myPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $result = $myPDO->query("INSERT INTO user_information (first_name, last_name, type_text) VALUES ('John', 'Doe', 'john@example.com')"); ?>
内容的提问来源于stack exchange,提问作者Jonas.D
相关产品推荐
相关产品推荐

