PHP插入数据库记录需用SQL INSERT语句,常用方式有五种:一、mysqli面向过程;二、mysqli面向对象;三、PDO命名占位符预处理;四、PDO问号占位符预处理;五、PDO结合extract()动态插入。

如果您需要在PHP中向数据库插入新记录,则必须通过SQL的INSERT语句实现,并结合PHP的数据处理与数据库连接机制。以下是几种常见且实用的新增数据写法:
一、使用mysqli面向过程方式执行INSERT
该方式依赖已建立的MySQLi连接,直接调用mysqli_query函数执行带参数的INSERT语句,适用于简单脚本或小型项目。
1、使用mysqli_connect()建立数据库连接,并检查连接是否成功。
2、准备SQL插入语句,例如:INSERT INTO users (name, email, age) VALUES ('张三', 'zhangsan@example.com', 25)。
立即学习“PHP免费学习笔记(深入)”;
3、调用mysqli_query()执行该SQL语句,并用mysqli_affected_rows()确认是否影响了行数。
4、根据返回结果输出成功或失败提示,例如:“新增成功,ID为:” . mysqli_insert_id($conn)。
二、使用mysqli面向对象方式执行INSERT
该方式将数据库连接封装为对象,语法更清晰,便于管理连接状态和错误处理。
1、实例化mysqli类并传入主机、用户名、密码、数据库名参数,创建连接对象。
2、编写INSERT语句字符串,确保字段名与值数量匹配,字符串值需用单引号包裹。
3、调用$conn->query()方法执行语句,返回布尔值表示执行结果。
4、若执行成功,使用$conn->insert_id获取自增主键值,该ID可用于后续关联操作。
三、使用PDO预处理方式执行INSERT
预处理语句可有效防止SQL注入,将SQL结构与数据分离,是安全写入数据的推荐做法。
1、使用PDO构造函数创建连接,设置ATTR_ERRMODE为ERRMODE_EXCEPTION以启用异常捕获。
2、定义含命名占位符的SQL语句,例如:INSERT INTO users (name, email, age) VALUES (:name, :email, :age)。
3、调用prepare()方法准备语句,再调用execute()传入关联数组绑定参数,如[':name' => '李四', ':email' => 'lisi@example.com', ':age' => 30]。
4、执行后可通过rowCount()确认影响行数,预处理自动转义特殊字符,无需手动addslashes()。
四、使用PDO位置占位符方式执行INSERT
当参数顺序固定且不需命名时,可用问号占位符替代,适合参数较少或顺序明确的场景。
1、建立PDO连接并启用异常模式,确保错误可被try-catch捕获。
2、编写INSERT语句,所有值位置用?代替,例如:INSERT INTO users (name, email, age) VALUES (?, ?, ?)。
3、调用prepare()准备语句,再调用execute()传入索引数组,如['王五', 'wangwu@example.com', 28]。
4、若发生错误,PDO会抛出PDOException,可在catch块中记录错误信息或返回友好提示。
五、使用PDO结合extract()动态插入关联数组
当表单提交数据以关联数组形式接收时,该方式可减少硬编码字段名,提升代码复用性。
1、接收POST数据并过滤,例如:$data = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING)。
2、提取键名生成字段列表,提取值生成占位符列表,拼接成完整INSERT语句。
3、使用PDO prepare + execute执行,绑定值时遍历$data数组构造参数序列。
4、执行完成后检查rowCount()是否为1,确保仅有一条记录被插入,避免意外批量写入。











