PHP修改数据库记录需用UPDATE语句,支持mysqli面向过程、mysqli面向对象、PDO预处理、PDO位置占位符及PDO事务五种方式,分别适用于简单脚本、结构化开发、防注入、简洁语句和强一致性场景。

如果需要在PHP中执行数据库记录的修改操作,则必须使用SQL的UPDATE语句配合PHP的数据连接与执行机制。以下是实现PHP修改数据的多种具体写法:
一、使用mysqli面向过程方式修改数据
该方式通过mysqli扩展提供的函数直接操作数据库连接,适用于简单脚本或入门级项目,需手动处理连接、查询和错误判断。
1、使用mysqli_connect()建立与MySQL数据库的连接,并传入主机名、用户名、密码和数据库名。
2、编写UPDATE SQL语句,明确指定要更新的表名、字段名及WHERE条件,防止全表误更新。
立即学习“PHP免费学习笔记(深入)”;
3、调用mysqli_query()执行该UPDATE语句,并检查返回值是否为true以确认执行成功。
4、使用mysqli_error()捕获并输出可能的SQL语法错误或权限异常信息。
5、执行完毕后调用mysqli_close()关闭数据库连接。
二、使用mysqli面向对象方式修改数据
该方式将数据库连接封装为mysqli类实例,代码结构更清晰,支持链式调用与属性访问,利于维护。
1、实例化mysqli类,传入主机、用户名、密码、数据库名和端口(可选)参数。
2、检查$mysqli->connect_error属性是否为空,非空则说明连接失败,需输出连接失败:$mysqli->connect_error。
3、构造UPDATE语句字符串,确保WHERE子句中条件字段已加引号(如字符串值需单引号包裹)。
4、调用$mysqli->query()方法执行更新,返回布尔值;若为false,输出更新失败:$mysqli->error。
5、调用$mysqli->close()释放连接资源。
三、使用PDO预处理方式修改数据
该方式通过PDO的prepare()和execute()机制防止SQL注入,支持多种数据库驱动,安全性与兼容性更高。
1、使用new PDO()创建PDO实例,DSN格式为"mysql:host=xxx;dbname=xxx;charset=utf8mb4"。
2、设置PDO::ATTR_ERRMODE为PDO::ERRMODE_EXCEPTION,使错误抛出异常而非静默失败。
3、调用$pdo->prepare()传入含命名占位符(如:name)的UPDATE语句,返回PDOStatement对象。
4、调用$stmt->execute()并传入关联数组(如['name' => '张三', 'id' => 5]),自动绑定并执行。
5、若发生异常,捕获PDOException并输出执行异常:$e->getMessage()。
四、使用PDO位置占位符方式修改数据
该方式采用问号占位符替代命名参数,适用于参数顺序固定且数量较少的场景,语句简洁但可读性略低。
1、建立PDO连接并启用异常模式,同第三种方式第一步与第二步。
2、编写UPDATE语句,字段值使用?代替,例如"UPDATE users SET name = ?, age = ? WHERE id = ?"。
3、调用prepare()获取PDOStatement对象。
4、调用execute()时传入索引数组,如['李四', 28, 5],各值按?出现顺序依次绑定。
5、执行后可通过$stmt->rowCount()获取受影响行数,若为0则提示未匹配到符合条件的记录。
五、使用PDO结合事务批量修改多条记录
该方式在单次数据库会话中执行多个UPDATE操作,并保证全部成功或全部回滚,适用于强一致性业务场景。
1、调用$pdo->beginTransaction()开启事务。
2、对每条待更新记录分别prepare并execute对应的UPDATE语句。
3、每次执行后检查$stmt->rowCount()是否大于0,任一为0则立即调用$pdo->rollback()并退出。
4、所有更新成功后调用$pdo->commit()提交事务。
5、若过程中抛出异常,捕获后执行$pdo->rollback(),并输出事务已回滚,数据未变更。











