PDO,准备声明,但我没有绑定值

时间:2014-10-15 06:33:12

标签: php mysql pdo

如果我不绑定值但我准备声明有什么不同。它在两种方式都有效,它是否具有更好的安全性? 这是代码

$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();

1 个答案:

答案 0 :(得分:2)

没有区别。您可以在致电bindValue()之前使用bindParam()execute(),也可以将参数数组传递给execute()

如果您已在数组中包含参数,则将数组参数用于execute()是很常见的,如果他们已经参与,请使用bindParam()bindValue()不同的变量。但这完全取决于您和您的偏好。