将HTML表单输入转换为PDO变量

时间:2015-12-10 13:49:19

标签: php sql pdo

我希望用户指定一个数字,这个数字将在连接数据库时在我的SQL语句中使用。如果用户输入五个,我希望显示表格中的五个第一行。

如果我写"SELECT * FROM TABLE WHERE ID <= 5"它有效,但我的变量是从表单中提取的。当我使用$variable = $_POST['variable']并使用"SELECT * FROM TABLE WHERE ID <= $variable"将其打印出来时,不会返回任何结果。那是为什么?

2 个答案:

答案 0 :(得分:1)

如果使用PDO,则需要绑定该变量。

try {
    $conn = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("SELECT * FROM TABLE WHERE ID <= :id");

    // bind params
    $stmt->bindParam(":id", $_POST['variable']);
    $stmt->execute();

    // fetch with
    // $stmt->fetchAll(PDO::FETCH_ASSOC);

    echo "OK";
} catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;

根据http://www.w3schools.com/php/php_mysql_prepared_statements.asp

答案 1 :(得分:0)

再次查看代码,只是一个简单的拼写错误:

适用于:

$sql = 'SELECT * FROM sql WHERE id <= ' . $items;

在此之前我有

$sql = 'SELECT * FROM sql WHERE id <= $items';