是否有必要将PDO放在IF语句中?

时间:2018-06-23 15:33:02

标签: php pdo

根据如何Wiki:这是如何防止PHP中的sql注入。

我只是想问问是否真的有必要以if语句开头?

$name = $_GET['username'];

if ($stmt = $mysqli->prepare("SELECT password FROM tbl_users WHERE name=?")) {

    // Bind a variable to the parameter as a string. 
    $stmt->bind_param("s", $name);

    // Execute the statement.
    $stmt->execute();

    // Get the variables from the query.
    $stmt->bind_result($pass);

    // Fetch the data.
    $stmt->fetch();

    // Display the data.
    printf("Password for user %s is %s\n", $name, $pass);

    // Close the prepared statement.
    $stmt->close();

}

1 个答案:

答案 0 :(得分:1)

如果使用准备好的语句,无论是否将函数调用包装在if语句中,SQL注入都是不可能的。

根据documentation,如果在执行过程中发生错误,mysqli::prepare返回falseif语句可以检测到该错误,如果返回值为false,则它不会尝试继续执行查询并使用其结果(因为这将失败或导致错误的结果)

顺便说一句,PDOmysqli系列的替代产品,并且不会出现在您的问题中(因此标题有点误导)。