我基本上尝试使用自动完成功能完成此查询(每次按键都会触发查询)(它的工作正常,但姓氏不能正确查询):
$query="SELECT * FROM names WHERE (first like '" . $_POST["keyword"] . "%') OR (last like '%" . $_POST["keyword"] . "') AND year>$curr_year";
感谢任何帮助!
答案 0 :(得分:1)
$query="SELECT * FROM names WHERE ((first like :first) OR (last like :last)) AND gradyear > :year";
$pdo = new PDO($dsn, $username, $password, $options);
$con = $pdo->prepare($query);
$con->execute([
':last'=> "%$_POST[keyword]",
':first'=> "$_POST[keyword]%",
':year'=>$curr_year
]);
$results = $con->fetchAll(PDO::FETCH_ASSOC);
这就是你准备好陈述的方式。你想要使用它的原因是为了防止SQL injection。您可以使用PDO来准备语句。