PHP MYSQL准备语句 - 差异

时间:2014-02-26 14:42:35

标签: php mysql prepared-statement

我正在尝试使我的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));

他们之间是否有任何显着差异????

1 个答案:

答案 0 :(得分:2)

根据https://stackoverflow.com/a/12392590/2124401,您需要强制执行数据类型。执行始终传递字符串,因此如果您需要不同的或特定的数据类型,请使用bindValue或bindParam。否则,他们只是一个偏好的问题。