我正在使用PHP和PDO构建CRUD应用程序。
我有一张包含各种食物的桌子,并希望根据用户输入的第一个字母返回结果。如同“以”a“开头的所有食物一样。”
我有这个问题:
$sql = "SELECT *
FROM food
WHERE FoodName LIKE 'a%';
$userInput = $_POST['userInput'];
这显然有效,并以a开始返回所有食物。
但是我如何根据用户输入进行查询,而不是为每个字母都写上面的内容。
我无法发布整个应用程序,我在localhost上发布,但我不认为这是必要的。实现这一目标的最有效方法是什么? JS,PHP还是PDO命令?
答案 0 :(得分:4)
根据您所拥有的内容,提交用户输入的表单会导致$_POST
数组中的变量:
$_POST['userInput']
要在查询中使用它,您只需将搜索项替换为已发布的变量。以下是PDO中使用预准备语句来防止潜在SQL注入攻击的示例:
$sql = $conn->prepare("SELECT * FROM `food` WHERE `FoodName` LIKE :user_input"); // $conn being the database connection
$parameters = array(':user_input' => $_POST['userInput'] . '%'); // note that I have concatenated the wildcard here
$sql->execute($parameters);
$results = $sql->fetchAll(PDO::FETCH_ASSOC); // fetch everything into an associative array
这里我已经执行了一系列参数,您还可以使用bindParam()
单独绑定每个参数(如果您有多个参数)