php - PHP 中的通配符查询在 SQL 中呈现,而不是在 PHP 中呈现

标签 php mysql wildcard

我已经用 PHP 处理这个查询一两天了。我正在使用 PHP 5.4 MySQL 5.6。下面的查询在 SQL 中运行良好,但在 PHP 中不起作用。我在 google 上搜索了一个答案,并在 PHP 和 SQL 中搜索了通配符答案的堆栈溢出。对于为什么它不起作用,目前这真的是我身边的一个棘手问题。

$search_string = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']);
$search_string = mysql_real_escape_string($search_string);

$query = 'SELECT * FROM population WHERE location LIKE "'.$search_string.'%"';

如果您需要更多信息,请告诉我 - 如果有帮助,我将 phpmyadmin 用于 SQL。

谢谢

编辑:我正在尝试从城市数据库中进行通配符搜索,因此键入“Al”的前 2 个字符应该生成一个自动完成,其中所有城市都以“Al”开头。

如果我在前面包含两个通配符 %'.$search_string.'%"'; 它将按预期自动完成(找到所有匹配的字符,它们可能在字符串中),但如果我删除第一个 %它返回“无结果”。

更新:

$query = 'SELECT * FROM population WHERE location LIKE "%'.$search_string.'"';

返回以最后一个字符开头的所有城市名称。

例如:键入“Al”会返回“central、normal 等”。但是如果我把我的通配符放在后面,它就好像 PHP 没有解析查询一样。

最佳答案

所以,如果没有更多信息,只是好奇和难以回答,但您尝试过吗:

WHERE LOWER(location) LIKE LOWER('".$string."%')

给我更多关于可能通过该查询传递的字符串类型的信息...我相信它可能正在使用额外的通配符,因为位置以正确的大小写存储并且字符串是小写或大写...

关于php - PHP 中的通配符查询在 SQL 中呈现,而不是在 PHP 中呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33049647/

相关文章:

windows - 为什么我在 Perl 中打开的管道中的 * 在 Windows 上不起作用?

Python - 删除遵循通配符模式的字符串

php - AJAX:如何使字段的标签和值不同?

php - 对mysql进行查询时出现问题-给定 bool 值

php - 删除记录后的Mysql递减其他ID

mysql - 选择字段中具有相同数据但大小写不同的行

iphone - 在iPhone SDK中查找带有通配符的文件名

php - Ajax、php、mysql 聊天

javascript - Ionic 项目,不在手机上工作,而是在开发过程中工作

php - 使用 NodeJS 而不是 PHP 的缺点