我想对准备好的陈述以及它们在以其他方式组装时的行为方式进行一些澄清。
以下示例代码来自Straight out this W3 entry。我的问题是,拥有比这个例子中提供的更多的值,我喜欢将它们存储在一个数组中,然后运行foreach来准备每个字符串。
$stmt = $conn->prepare("INSERT INTO MyGuests (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";
etc
下面的编辑是否可以安全应用,或者是否破坏了准备好的陈述的全部内容?
$stuff = array("firstname", "lastname", "email");
foreach ($stuff as $singlestuff) {
$singlestuff1 = ':'.$singlestuff;
$singlestuff2 = '$'.$singlestuff;
$stmt = $conn->prepare("INSERT INTO MyGuests ($singlestuff1) ) VALUES ($singlestuff2)");
$stmt->bindParam($singlestuff1, $singlestuff2);
}
对于任何宏观错误,对不起,代码只是概念的一个例证
提前谢谢!
答案 0 :(得分:0)
在foreach循环中绑定,假设变量存在:
foreach ($stuff as $singlestuff) {
$stmt->bindParam(':' . $singlestuff, $$singlestuff);
}