私のphpスクリプトは、クライアントのデータベースを検索することになっています。データベース内のクライアント名が数字で始まる場合を除いて、すべてがうまく機能します(列の形式はVarchar(255)です)。
if(isset($_GET['search'])) {
$searchVal = "%" . $_GET['search'] . "%";
}
これが私がそれをつかむ方法です。サイトの反対側のオートコンプリート機能は問題なく機能し、データの送信に$ _POSTを使用しているため(サイトの訪問者がナビゲートできるように$ _GETを使用したかった)、言及する価値があると思います。 。
$query = "SELECT DISTINCT clients.client_id,
clients.logoFileName,
clients.clientName,
clients.streetAddress,
clients.city,
clients.state,
clients.zip,
clients.latitude,
clients.longitude
FROM clients
INNER JOIN clientData
ON clients.client_id = clientData.client_id
WHERE clients.clientName LIKE ? AND clients.city LIKE ?
OR clientData.clientCategory LIKE ? AND clients.city LIKE ?
OR clientData.term LIKE ? AND clients.city LIKE ?";
//setup
$stmt->prepare($query);
$stmt->bind_param('ssssss',$searchVal,$cityVal,$searchVal,$cityVal,$searchVal,$cityVal);
したがって、この検索は文字通り99%の検索で問題なく実行されます(約1000のクライアントがリストされており、これは数字で始まる10にのみ適用されます)。
したがって、「UPS Store 1840」を検索すると、「UPS」、「Store」、または「1840」を検索すると、それらが返されます。しかし、「14キャンドル」を検索すると、「14」も「キャンドル」も結果を返しません。
PHPMyAdminで同じ情報を検索すると、同じ結果が発生します(編集:まあ、完全なエラーではなく、「0行が返されました」と表示されます)。しかし、私が言ったように、$ _ POSTを使用したクエリは問題なく機能し、文字通り同じコードを使用します(同様の検索にアクセスしますが、取得するデータが少なく、制限があります)。
これは間違いなくMYSQLでエラーをポップしているので、送信される情報と関係があります。これは、$_POSTを介した送信が$_GETとは異なるフォーマットであると私に思わせます。
何が間違っているのですか、どうすれば修正できますか?