如果我不绑定值但我准备声明有什么不同。它在两种方式都有效,它是否具有更好的安全性? 这是代码
$db = new PDO("mysql:host=".$server.";dbname=".$dbName.";charset=utf8", $user, $pwd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$stmt = $db->prepare(UPDATE table1 SET a = 1, name = ?, last_seen = NOW() WHERE b = ?);
$paramAry[0] = "abc";
$paramAry[1] = "def";
$stmt->execute($paramAry);
OR
$db = new PDO("mysql:host=".$server.";dbname=".$dbName.";charset=utf8", $user, $pwd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$stmt = $db->prepare(UPDATE table1 SET a = 1, name = ?, last_seen = NOW() WHERE b = ?);
$paramAry[0] = "abc";
$paramAry[1] = "def";
$stmt->bindValue(1, $paramAry[0], PDO::PARAM_STR);
$stmt->bindValue(2, $paramAry[1], PDO::PARAM_STR);
$stmt->execute();
答案 0 :(得分:2)
没有区别。您可以在致电bindValue()
之前使用bindParam()
或execute()
,也可以将参数数组传递给execute()
。
如果您已在数组中包含参数,则将数组参数用于execute()
是很常见的,如果他们已经参与,请使用bindParam()
或bindValue()
不同的变量。但这完全取决于您和您的偏好。