我被要求在客户端网站上添加一个小的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>';
}
}
答案 0 :(得分:3)
!ereg('[^A-Za-z0-9]', $search
看起来你要从允许的字符列表中排除空格。我不会说太多PHP,也不会因为看文档而烦恼。