根据用户输入的第一个字符

时间:2017-08-30 12:54:15

标签: php mysql pdo

我正在使用PHP和PDO构建CRUD应用程序。

我有一张包含各种食物的桌子,并希望根据用户输入的第一个字母返回结果。如同“以”a“开头的所有食物一样。”

我有这个问题:

$sql = "SELECT * 
                    FROM food
                    WHERE FoodName LIKE 'a%';
    $userInput = $_POST['userInput'];

这显然有效,并以a开始返回所有食物。

但是我如何根据用户输入进行查询,而不是为每个字母都写上面的内容。

我无法发布整个应用程序,我在localhost上发布,但我不认为这是必要的。实现这一目标的最有效方法是什么? JS,PHP还是PDO命令?

1 个答案:

答案 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()单独绑定每个参数(如果您有多个参数)