这是一个相当基本的 PHP PDO 片段,它访问名为“Users”的 MySQL 表并使用准备好的语句和多个绑定(bind)向其中插入数据行:
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// prepare sql and bind parameters
$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);
// insert a row
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();
// insert another row
$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();
....
可以看出,这涉及无限数量的查询,因为每个行插入都有自己的execute()。我正在尝试减少查询数量,我的目标是让单个循环为所有插入的记录创建单个 INSERT 查询。是否可以?如果没有准备好的声明,这很容易,我可以让它工作,但我迷失了准备。
最佳答案
用逗号 (,) 连接字符串即可充当一个参数。
$stmt->bindParam(':firstname', $firstname[0] . ',' . $firstname[1]);
关于mysql - 使用Prepared语句对多条记录进行单个INSERT查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30027296/