PHP PDO执行insert语句MySQL
在PHP中,PDO(PHP Data Objects)是一种用来访问数据库的扩展,它提供了一种通用的访问数据库的方式,可以与多种数据库进行交互。在本文中,我们将详细讲解如何使用PDO执行Insert语句来向MySQL数据库中插入数据。
连接到MySQL数据库
在使用PDO之前,我们首先需要连接到MySQL数据库。以下是连接到MySQL数据库的示例代码:
<?php
servername = "localhost";username = "username";
password = "password";dbname = "database_name";
try {
conn = new PDO("mysql:host=servername;dbname=dbname",username, password);conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException e) {
echo "Connection failed: " .e->getMessage();
}
?>
在上面的代码中,我们通过PDO的构造函数创建了一个数据库连接,并设置了错误模式为ERRMODE_EXCEPTION,以便在发生错误时抛出异常。如果连接成功,则输出”Connected successfully”,否则输出错误信息。
执行Insert语句插入数据
一旦成功连接到数据库,我们就可以执行Insert语句来向数据库中插入数据。以下是一个示例代码,演示如何向名为”users”的表中插入一条记录:
<?php
servername = "localhost";username = "username";
password = "password";dbname = "database_name";
try {
conn = new PDO("mysql:host=servername;dbname=dbname",username, password);conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
stmt =conn->prepare("INSERT INTO users (firstname, lastname, email) VALUES (:firstname, :lastname, :email)");
stmt->bindParam(':firstname',firstname);
stmt->bindParam(':lastname',lastname);
stmt->bindParam(':email',email);
firstname = "John";lastname = "Doe";
email = "john.doe@example.com";stmt->execute();
echo "New record created successfully";
} catch(PDOException e) {
echo "Error: " .e->getMessage();
}
?>
在上面的代码中,我们首先准备了一个Insert语句,并使用bindParam()方法绑定了命名参数:firstname、:lastname和:email。然后我们为这些变量赋值,并通过execute()方法执行Insert语句。如果插入成功,则输出”New record created successfully”,否则输出错误信息。
参数绑定示例
除了使用bindParam()方法绑定参数外,我们还可以直接在execute()方法中传入参数数组。以下是一个示例代码,演示了两种参数绑定的方式:
<?php
servername = "localhost";username = "username";
password = "password";dbname = "database_name";
try {
conn = new PDO("mysql:host=servername;dbname=dbname",username, password);conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
stmt =conn->prepare("INSERT INTO users (firstname, lastname, email) VALUES (:firstname, :lastname, :email)");
data = [
'firstname' => 'Jane',
'lastname' => 'Doe',
'email' => 'jane.doe@example.com'
];stmt->execute(data);
echo "New record created successfully";
} catch(PDOExceptione) {
echo "Error: " . $e->getMessage();
}
?>
在上面的代码中,我们直接通过execute()方法传入了一个关联数组$data,其中键名与命名参数相匹配。这种方式也可以实现参数绑定,更加简洁和直观。
完整示例:插入多条记录
除了插入单条记录外,我们还可以通过循环插入多条记录。以下是一个示例代码,演示了如何循环插入三条用户记录:
<?php
servername = "localhost";username = "username";
password = "password";dbname = "database_name";
users = [
['John', 'Doe', 'john.doe@example.com'],
['Jane', 'Doe', 'jane.doe@example.com'],
['Mike', 'Smith', 'mike.smith@example.com']
];
try {conn = new PDO("mysql:host=servername;dbname=dbname", username,password);
conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);stmt = conn->prepare("INSERT INTO users (firstname, lastname, email) VALUES (:firstname, :lastname, :email)");
foreach(users as user) {stmt->bindParam(':firstname', user[0]);stmt->bindParam(':lastname', user[1]);stmt->bindParam(':email', user[2]);stmt->execute();
}
echo "New records created successfully";
} catch(PDOException e) {
echo "Error: " .e->getMessage();
}
?>
在上面的代码中,我们定义了一个包含三个用户信息的二维数组$users,然后通过循环依次插入这三条用户记录。这种方法非常适用于批量插入数据的场景。
总结
通过本文的讲解,我们详细介绍了如何使用PHP PDO执行Insert语句来向MySQL数据库中插入数据。我们讲解了连接到数据库、执行Insert语句插入数据、参数绑定以及插入多条记录的示例代码。