0

所以我已经成功地创建了一个搜索框,它链接到我的 MS 数据库并返回搜索,但是当我尝试在查询中实现通配符时,我现在遇到了一些问题。我已经阅读了很多人关于通配符的帖子,但我仍然对将它与当前代码放在哪里感到困惑。我尝试了几种方法,但幸运的是,没有任何效果。我是否需要更改某些内容才能使通配符起作用?我使用了“ ”而不是“%”,因为人们说 MS Access 只支持““。我想要做的是允许用户搜索像“娃娃”这样的词,并且所有带有“娃娃”这个词的产品都会出现在该字段中。也有可能,当用户点击 ninjaturtle 并且所有信息都将在那里时,将结果与附加到“ninjaturtle”之类的超链接一起返回?但首先,我只想知道如何让通配符搜索工作。我的代码发布在下面。任何帮助是极大的赞赏。谢谢!

表:产品字段:Suit_Name、Product_Description

<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>
4

1 回答 1

1

从 PHP 访问 Access 时要使用的通配符是%,并且您需要使用 LIKE(而不是 =)在 SQL 中进行通配符匹配。所以你需要类似的东西

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

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

于 2013-03-18T20:31:50.710 回答