2012-03-15 13 views
2

検索クエリ$ s_queryに問題があります。私のmysqlデータベースにcolumに対応タイプ(日付、タイトル、または場所)を検索することができ ユーザーがphp/mysql検索クエリの構文

$search_type =mysql_real_escape_string($_POST['type']); 
$search_query =mysql_real_escape_string($_POST['search_query']); 

if ($search_query == "") { 
    echo "<p>Please enter a search...</p>"; 
    exit;} 

$s_query = "SELECT * FROM `posts` WHERE `$search_type` == `$search_query` "; 

$s_result1=mysql_query($s_query); 

if (!$s_result1) { 
    die('Invalid query: ' . mysql_error()); 
    //header ("Location: /UC_page.html"); 
} 

$s_row = mysql_fetch_array($s_result1); 
$s_num1=mysql_numrows($s_result1); 
mysql_close(); 

mysql_errorは言う: あなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして正しい構文が近くで使用されるようにしてください。 '== 1956'

私はすべての演算子を試してみました。 私は仕事の日付を得ましたが、文字列のどれもありませんでした。ありがとうございます。

+0

'=='の必要がないのは、 '='それだけです。 –

答えて

4

実際には2つの問題があります。まず、あなたの値を `で囲みます。これは無効です。代わりに"または'を使用してください。

また、==は有効な構文ではないため、代わりに=を使用する必要があります。大文字と小文字を区別しない検索のために、あなたがやっていることを見て、おそらくLIKEを使いたいと思うかもしれません。

だから、このクエリは動作するはずです:

SELECT * FROM `posts` WHERE `$search_type` = '$search_query' 

LIKEとを:

SELECT * FROM `posts` WHERE `$search_type` LIKE '$search_query' 
+0

ありがとうございました!!!完璧に動作します! – user1107703

3

あなたは挿入値のまわりに `(タブボタンの上に)置いています。それらは唯一のフィールドに移動します。あなたは値のために(あなたのスラッシュボタンの上に)あなたを使用します。

+0

ご回答いただきありがとうございます。私はそれを試してみて、mysql_errorを得ました: SQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文を使用して '==' Lorem Ipsum 'の近くで使用してください。 – user1107703

0

これは、あなたがMySQLを期待しているものをクエリ理解するのに役立つかもしれませんが:

$s_query = "SELECT * FROM `posts` WHERE `" . $search_type . "` = " . $search_query; 

また、あなたを確認してください$search_queryに必要な見積もりを追加します。 EG:文字列の場合は'で囲みます。