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 にアクセスするときに使用するワイルドカード文字は%であり、SQL でのワイルドカードの一致には (= の代わりに) LIKE を使用する必要があります。だからあなたは次のようなものが必要です

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

: PHP はわかりませんが、$productname変数 (ユーザー入力から直接取得されたように見えます) を文字列と連結して SQL ステートメントを作成すると、セキュリティの脆弱性 (SQL インジェクション) にさらされる可能性があります。

于 2013-03-18T20:31:50.710 に答える