有人要求我向客户站点添加一个小的 AJAX 功能。基本上我有一个包含 3 个字段的 MySQL 表:
- 编号
- 产品
- 姓名
该站点的想法是,用户开始输入“名称”,然后在敲击几次按键后显示产品。我的查询如下所示:
$query = mysql_query("SELECT product FROM mytable WHERE name LIKE '%".$search."%'");
一切正常,除非“名称”中有空格。例如,如果我有一个名为“Coca Cola”的名称,当我键入“Coca”时,脚本会成功列出产品,但只要我键入空格,它就不再返回任何行。
我到处寻找解决方案。我知道空格被解释为某种分隔符,但是我可以让数据库将空格解释为……嗯……一个空格吗?如果没有,是否有更好的方法来实现我想要完成的目标?
编辑:
我在 PHPMyAdmin 中运行它,它实际上返回了正确的结果,这让我相信它一定是 PHP 中的东西。有完整的脚本:
$search = $_GET['search'];
$already_echoed = array();
if (!ereg('[^A-Za-z0-9]', $search) && strlen($search) > 2) {
$query = mysql_query("SELECT product FROM mytable WHERE name LIKE '%".$search."%'");
if (mysql_num_rows($query) > 0) {
echo '<h4>Suggestions:</h4><ul>';
while ($product = mysql_fetch_array($query)) {
if (!in_array($product['product'], $already_echoed)) {
$getProduct = mysql_query("SELECT name, shortname FROM products WHERE id='".$product['product']."'");
$product2 = mysql_fetch_array($getProduct);
echo '<li><a href="http://' . $product2['shortname'] . '.mydomain.com">' . $product2['name'] . '</a></li>';
$already_echoed[] = $product['product'];
}
}
echo '</ul>';
}
}
最佳答案
!ereg('[^A-Za-z0-9]', $search
看起来您正在从允许的字符列表中排除空格。我不太会说 PHP,也懒得去看文档。
关于php - 空格中断 MySQL 字符串搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679355/