我有以下代码:
$places = query("SELECT * FROM places WHERE postal_code = ? or place_name = ? or admin_code1 = ? or admin_name2 = ? or admin_name1 = ?",
$_GET["geo"],$_GET["geo"],$_GET["geo"],$_GET["geo"],$_GET["geo"]);
正如预期的那样,当我开始输入 New York 时,下拉框会显示“找不到任何地方”,直到找到与 New York 完全匹配的位置,然后下拉框会建议一些与 New York 完全匹配的位置。当我开始输入邮政编码时也是如此。
我修改了代码以对 postal_code 使用 LIKE,如下所示:
$places = query("SELECT * FROM places WHERE places.postal_code LIKE ? or place_name = ? or admin_code1 = ? or admin_name2 = ? or admin_name1 = ?",
$_GET["geo"],$_GET["geo"],$_GET["geo"],$_GET["geo"],$_GET["geo"]);
但是这个修改没有效果。我希望查询根据在 zip 开头而不是完整 zip 中键入内容返回位置。由于我是 SQL 的新手,我不确定语法以及需要将哪些修饰符合并到代码的 LIKE 部分才能实现此功能。
最佳答案
使用LIKE时,需要使用通配符。在这种情况下,假设输入的开头是正确的并且只缺少结尾:
LIKE '?%'
因此在您的代码中将是:
$places = query("SELECT * FROM places WHERE places.postal_code LIKE '?%' or place_name = '?%' or admin_code1 = '?%' or admin_name2 = '?%' or admin_name1 = '?%'",
$_GET["geo"],$_GET["geo"],$_GET["geo"],$_GET["geo"],$_GET["geo"]);
关于javascript - 使用 Twitter/typeahead.js 在 SELECT 查询中合并 SQL LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31087724/