次のようなMySQLテーブルがあります。
index | tag | posts
-------------------------
1 | cats | 9,10
2 | a cat | 9,10
3 | kitty | 9,10
4 | meow | 9,10
検索クエリに一致する行を返そうとしています。シンプルな を使用して検索パラメーターを渡しました?search=cats
。これは私が使用しているPHPです:
$search = $_GET['search'];
$query = mysql_query("SELECT * FROM tags WHERE tag = '$search'");
echo(mysql_num_rows($query));
$result = mysql_fetch_array($query);
$print = $result['posts'];
echo($print);
ただし、mysql_num_rows($query)
は 0 を出力し、$print
NULL を返します。で確認できます($print == "")
。TRUE と評価され、mysql_num_rows($query)
4 が返されます。検索クエリをテーブルにないものに設定しようとしたところ、期待どおりに FALSE が返されました。も削除しようWHERE tag = '$search'
としましたが、本来のようにテーブルが返されます。
私が見落としているものはありますか?
編集
みんなのアドバイスを受けて、私が今使っているコードは次のとおりです。
$search = mysql_real_escape_string($_GET['search']);
var_dump($search); //prints string(4) "cats" just like it should
$queryText = "SELECT * FROM tags WHERE tag = '%".$search."%'";
echo($queryText); //SELECT * FROM tags WHERE tag = '%cats%'
$query = mysql_query($queryText) or die(mysql_error()); //no error
$rows = mysql_num_rows($query); //this returns 0 and I know it should match 1 row
echo('rows: '.$rows);
$result = mysql_fetch_array($query);
$print = $result['posts'];
echo($print); //empty
まだ同じ問題があります。行のmysql_query
代わりに NULL を返すか、一致しない場合は FALSE を返します。
(将来的にはmysqli
API を使用しますが、このプロジェクトを で終了したいと思いmysql
ます。提案とアドバイスに感謝します)