javascript - 使用 Twitter/typeahead.js 在 SELECT 查询中合并 SQL LIKE

标签 javascript php mysql

我有以下代码:

$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/

相关文章:

javascript - 如何访问此 JSON 中的对象

javascript - 从特定字符串开始对Javascript中的数组进行排序

php - 在 Linux 命令行中替代 finfo(FILEINFO_MIME)->buffer()

MySQL查询左连接问题获取数据

php - MySQL Join - 引用三个以上的表并获取与主表匹配的值

javascript - 如何使用 jQuery 检查整个字符串是否包含特定单词?

javascript - .addOn 在此传单示例代码中如何工作/执行?

php - mysql文本中出现奇怪的字符

php - WooCommerce 购物车更改后更新短代码显示

php - 由于时区设置而改变日期