1

これはここの他の多くの投稿と同じであることは知っていますが、わかりません!

私のコードは次のようになります。

$i=0;
$shelves = array();
$shelves['position'] = array();
$query = "select id, cat_id, book_title, writer, publisher, issue_year, copies, abstract from library where $table like '%$search_param%'";
$result = mysql_query($query);
while ( $data = mysql_fetch_assoc($result) ) {
   error_log($data['id']);
   $shelves['position'][$i]['id'] = $data['id'];
   $shelves['position'][$i]['cat_id'] = $data['cat_id'];
   $shelves['position'][$i]['book_title'] = $data['book_title'];
   $shelves['position'][$i]['writer'] = $data['writer'];
   $shelves['position'][$i]['publisher'] = $data['publisher'];
   $shelves['position'][$i]['issue_year'] = $data['issue_year'];
   $shelves['position'][$i]['copies'] = $data['copies'];
   $shelves['position'][$i]['abstract'] = $data['abstract'];
   ++$i;
}
error_log( count($shelves['position']) );

そして、このような他の投稿のトーンがあるので、私は彼らの解決策を試しました:

$query = sprintf("select id, cat_id, book_title, writer, publisher, issue_year, copies, abstract from library where %s like'%%%s%'",mysql_real_escape_string($table),mysql_real_escape_string($search_param) );

またはそのようなもの:

$query = "select id, cat_id, book_title, writer, publisher, issue_year, copies, abstract from library where $table like '%{$search_param}%'";

また、動的変数なしでテキストだけでクエリを実行しようとしましたが、同じ結果が得られました。

$query = "select id, cat_id, book_title, writer, publisher, issue_year, copies, abstract from library where book_title like '%lord%'";

何も機能していないようです。

mysql ワークベンチでクエリをテストしましたが、魅力的に機能します。

3つのクエリすべてで、最初のerror_logのログを取得することはなく、2番目のクエリは毎回0と叫びます!

誰か道を照らしてくれませんか?

4

3 に答える 3

2

ここで疑わしいのは、使用している文字セット/照合順序だけです。これにより、大文字と小文字の区別の問題が発生する可能性があります。非機密照合を強制してみて、何が起こるかを確認してください。

SET NAMES 'utf8' COLLATE 'utf8_general_ci';

utf8_bin (または任意の *_bin ) では、大文字と小文字が区別されます。接続照合をインセンシティブに設定すると、スクリプトと MySQL Workbench の違いが説明されます。

とにかく、この種の問題を回避するために、の照合を大文字と小文字を区別しないように設定します。

于 2013-07-11T04:14:53.553 に答える
0

これを試してみてください。

$query ="select id,
                cat_id, 
                book_title,
                writer, 
                publisher, 
                issue_year, 
                copies, 
                abstract 
                from library 
                where ".$table." like "%".$search_param."%";

しかし、まだテストされていません。

于 2013-07-11T04:52:25.630 に答える