Php 常规搜索有效,但当我尝试在混合中添加通配符时,没有结果

Php 常规搜索有效,但当我尝试在混合中添加通配符时,没有结果,php,ms-access,search,wildcard,Php,Ms Access,Search,Wildcard,因此,我成功地创建了一个搜索框,它链接到我的MS数据库并返回一个搜索,但我现在在尝试在查询中实现通配符时遇到了一些问题。我读过很多人关于通配符的帖子,但是我仍然不知道我应该把它和我当前的代码放在哪里。我试过几种方法,但运气好,什么也没用。我是否需要更改某些内容才能使通配符正常工作?我使用了“”而不是“%”,因为人们说MS Access只支持“”。我想做的是允许用户搜索“Doll”这样的词,所有带有“Doll”一词的产品都会显示在该字段中。还有可能,返回结果时会附加类似“ninjaturtle”的

因此,我成功地创建了一个搜索框,它链接到我的MS数据库并返回一个搜索,但我现在在尝试在查询中实现通配符时遇到了一些问题。我读过很多人关于通配符的帖子,但是我仍然不知道我应该把它和我当前的代码放在哪里。我试过几种方法,但运气好,什么也没用。我是否需要更改某些内容才能使通配符正常工作?我使用了“”而不是“%”,因为人们说MS Access只支持“”。我想做的是允许用户搜索“Doll”这样的词,所有带有“Doll”一词的产品都会显示在该字段中。还有可能,返回结果时会附加类似“ninjaturtle”的超链接吗“当用户点击ninjaturtle时,所有信息都会出现在哪里?但首先,我只想知道如何让通配符搜索工作。我的代码贴在下面。非常感谢您的帮助。谢谢大家!

表:产品 字段:西装名称、产品描述

<form action="dirsuits.php" method="post">
<ul><input type="text" name="designername" /></ul>
<ul><input type="submit" value="Search" /></ul></form>
</ul>
<p>&nbsp;</p>
<!-- end .sidebar1 --></div>
<div class="content">
<h1>Ninja Suits:</h1>

<p><?php
$productname=filter_input (INPUT_POST, "productName");

$conn = new COM("ADODB.Connection") or die("Cannot start ADO"); 
$connString= "Provider=Microsoft.Jet.OLEDB.4.0;Data     Source=\\server\\KP\\Database\\DesignerProducts.mdb";
$conn->Open($connString);
$selectCommand="SELECT Product_Description, Suit_Name FROM DesignerProducts WHERE     Suit_Name='".$suitname."'";
$rs=$conn->Execute($selectCommand);
if (!$rs->EOF){
$Suit_Name=$rs->Fields("Suit_Name");
echo "Results: $Suit_Name";
}
else  {
echo "We are out";
$rs->Close;}
?>
</p>

      忍者套装:
      从PHP访问时使用的通配符是
      %
      ,在SQL中需要使用LIKE(而不是=)进行通配符匹配。所以你需要像

      $selectCommand="SELECT Product_Description, Product_Name FROM Products WHERE Product_Name LIKE '%".$productname."%'";
      

      注意:我不懂PHP,但将
      $productname
      变量(看起来它直接来自用户输入)与字符串连接起来以构建SQL语句可能会使您面临安全漏洞(SQL注入)

      外卡只有在MS Access中工作时才是*的,否则,它是%。@martin是的,在我发布这篇文章之前,我实际上尝试过这种方法,但它不起作用。即使我输入了正确的文件名,比如“ninjaturtle”,也不会显示任何内容。vAny还有其他建议吗?谢谢你的帮助。@martinWilson-谢谢Martin,这是“%”!我还有另外一个问题,我如何让所有的列表都显示出来,因为当我输入“ninjaturtle”时,只有一个列表显示出来,而我还有另外4个列表中有“ninjaturtle”这个词?我不懂PHP,但你几乎肯定需要迭代你的结果集(只是在线查看)-你需要这样的东西:while(!$recordSet->EOF){$Product\U Name=$rs->Fields(“Product\U Name”);echo“Results:$Product\U Name”;$recordSet->MoveNext();}使用ADO,通配符是
      %
      而不是
      *
      @hansUp感谢您的提示!