我希望用户指定一个数字,这个数字将在连接数据库时在我的SQL语句中使用。如果用户输入五个,我希望显示表格中的五个第一行。
如果我写"SELECT * FROM TABLE WHERE ID <= 5"
它有效,但我的变量是从表单中提取的。当我使用$variable = $_POST['variable']
并使用"SELECT * FROM TABLE WHERE ID <= $variable"
将其打印出来时,不会返回任何结果。那是为什么?
答案 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';