2011-08-11 9 views
-1

私は、ユーザーが検索したいものを書くことを可能にするHTMLフォームを持っています。この場合、名前。フォームからのユーザー入力に基づいてデータベースクエリを作成しますか?

フォームは機能しますが、PHPにあります。私は、MySQLがユーザーが入力したものをデータベースで検索するようにするために何を書かなければならないのか分かりません。ここで

は私が立ち往生ラインです:

$result = mysql_query("SELECT * FROM {$table} WHERE name = 'What do i gonna write 
here? (take away the ' "); 

私はこれはmysqliのを使用してあなたの方法を取得する必要があります。5.

+0

フォームメソッドは投稿ですか、取得しますか?入力名は何ですか?結果の出力に助けが必要ですか? – Nemanja

+0

フォームメソッドはPostで、入力名は:searchです。はい、Where Name = part –

答えて

1

PHPを使用しています。マニュアルはhereです。

これは、フォームをPOSTすることを前提としています。そうしないと、$ _POSTを使用するリクエスト変数に変更できます。 mysqli_real_escape_stringを呼び出す前または後にフォーム変数のいくつかの健全性チェックは、実稼働環境で非常に役立つ(必須)でしょう。

$db = new mysqli("localhost","user","password","database"); 

if(mysqli_connect_error()) 
{ 
    printf("Connection failed:%s \n",mysqli_connect_error()); 
    exit(); 
} 

$name = mysqli_real_escape_string($db, $_POST['search']); 
$table = 'some_table'; 

if($result = $db->query("SELECT * FROM $table WHERE name = $name", MYSQLI_ASSOC)) 
{ 
    while($row = $result->fetch_object()) 
    { 
     // $row is an associative array 
     // Do something here 
    } 
} 
$db->close(); 
+0

おかげで素晴らしいですが、保存方法で結果を出力する方法と、結果= nullの場合は、mysqlのおかげで、私は本当にあなたの助けと親切に感謝:) –

+0

あなたの質問は、結果を出力する方法ではなく、データベースを照会する方法でした。いくつかの研究があなたの側で行われる必要があります。 – ashurexm

-1
$sf = stripslashes($_REQUEST['search']); 
$sf = mysql_real_escape_string($sf); 


$result = mysql_query("SELECT * FROM {$table} WHERE name = '". $sf."'"); 
while($row = mysql_fetch_array($result)){ 
    //do stuff 
} 
+1

に助けが必要です。これはうまくいくかもしれませんが、これは危険であり、決して使用しないでください。 Google SQLインジェクション – ashurexm

+0

質問は、SQLインジェクションから保護する方法を教えてくれませんでした。クエリを書く方法だけでした。私は(おそらくばかげて)mysqlを使用している誰もがスラッシュとすべての良いものを取り除くことをすでに知っていると仮定します。あなたが-1を与える前に次の質問を読む –

+0

彼の質問はとても基本的なので、彼はおそらく知らないと主張するだろう。それに加えて、PHPについて何も知らない誰かがこれにつまずくかもしれません。 – ashurexm

関連する問題