PDO编写的声明。选择一切

时间:2017-02-11 11:00:18

标签: php mysql pdo prepared-statement

我尝试学习PDO和准备好的陈述。我已阅读所有文档,我有一些问题。如果我理解,在下面的情况下,这是不可能的,并且不需要准备好的陈述。那是对的吗?它足够安全吗?

try {
    $conn = new PDO("mysql:host=$servername; dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully <br>";

    $sql = "SELECT title_post, subtitle_post 
            FROM en";
    $statement = $conn->prepare($sql);
    $statement->execute();

    $rows = $statement->fetchAll();
    foreach($rows as $row){
        echo $row['title_post'] . '<br>';
        echo $row['subtitle_post'] . '<br>';
    }
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;

2 个答案:

答案 0 :(得分:1)

如果查询字符串是常量,则无法注入恶意SQL。正如您所指出的,使用预准备语句确实是多余的。

答案 1 :(得分:1)

execute()运行一个预准备语句,允许您绑定参数以避免需要转义或引用参数。如果您多次重复查询,执行也会更好。

query()运行标准SQL语句,要求您正确转义所有数据以避免SQL注入和其他问题。

所以在你的情况下你还没有逃脱..因为sql的所有代码都基于文字并且你不需要prepare()

相关问题