我正在尝试使我的SQL调用更安全,并且我遇到了两种编写预处理语句的方法,我想知道它们之间是否存在任何差异。
这是查询:
$query =
"INSERT INTO companies
VALUES(
NULL,
:name,
:assignation,
:priority
)";
1)
$statement = $pdoDbInstance->prepare($query);
$statement->bindValue(':name', $name);
$statement->bindValue(':assignation', $assignation);
$statement->bindValue(':priority', $priority);
$result = $statement->execute();
2)
$statement = $pdoDbInstance->prepare($query);
$result = $statement->execute(array(":name" => $name, ":assignation" => $assignation, ":priority" => $priority));
他们之间是否有任何显着差异????
答案 0 :(得分:2)
根据https://stackoverflow.com/a/12392590/2124401,您需要强制执行数据类型。执行始终传递字符串,因此如果您需要不同的或特定的数据类型,请使用bindValue或bindParam。否则,他们只是一个偏好的问题。