正如标题所述:我正在尝试使用 PDO 和令牌更新 MySQL 数据库中的特定记录,以防止任何注入。
这是我的代码:
一些有助于构建查询的数组:
$id = 1234
$values = array ('a','b','c',);
$variables = array ($A, $B, $C);
通过循环构建的查询:
$sql = "UPDATE table1 SET ";
foreach($values as $value)
{
$sql .="$value = :$value, ";
}
$sql = rtrim($sql,', ');
$sql .=" WHERE id = '$id'";
通过 PDO 执行查询:
try
{
$pdo = new PDO('mysql:host=localhost; dbname=db01', $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare($sql);
foreach(array_combine($values, $variables) as $value=>$variable)
{
$stmt->bindParam(":$value", $variable);
}
$stmt->execute();
结果:指定记录中的每个字段(匹配 $id)都设置为相同的值,该值始终等于数组中列出的最后一个变量的内容(在此示例中,它们都将包含 $C 中保存的值)
回显 SQL 查询表明它已正确构造。
有任何想法吗?感谢您的考虑