2017-08-06 15 views
0

selectオプションタグを使用して検索ボックスを作成しようとしています。その列のデータをフェッチする必要があります。selectオプションタグを使用してデータベースからデータを取得する場合 'all'データベースで '*'を選択する場合

私のphpコードは以下の通りです。おかげ

if(isset($_POST['submit'])) { 
    $area = $_POST['city']; 
    if(isset($_POST['work']!== 'all')) 
     {$work = $_POST['work']; } 
    else {$work = '*';} ; 

    $sel2 = "SELECT * FROM `userdata` WHERE `area`='".$area."' AND `work`='".$work."'" ; 
    $res2 = mysqli_query($con,$sel2); 
+0

ような変数を設定しますか?クエリはどのように見えますか? – Qirel

答えて

0

あなたはworkallに等しいとき、あなたはSQLクエリで明示的に言及する必要はありません任意およびすべての仕事に関連するデータを取得したいと考えているので。具体的な仕事関連のデータを取得したい場合にのみ、にしてください。

if(isset($_POST['submit'])) { 
    $area = $_POST['city']; 
    $sel2 = "SELECT * FROM `userdata` WHERE `area`='".$area."'"; 
    if(isset($_POST['work']) && $_POST['work'] !== 'all') 
     $sel2 .= " AND `work`='".$_POST['work']."'"; 
    $res2 = mysqli_query($con,$sel2); 

追記:今すぐあなたのクエリがSQLインジェクション攻撃を受けやすいのでに関するprepared statementを学んだからあなたのコードは次のようにする必要があります。また、how you can prevent SQL injection in PHPを参照してください。

+0

ありがとうRajdeep!できます。 – fahad

0

は、あなたがこれまでに試してみました何この

if(isset($_POST['submit'])) { 
    $area = $_POST['city']; 
    if(isset($_POST['work']!== 'all')) 
$data=addslashes($_POST['work']); 
     {$work = "AND `work`='".$data."'"; 
} 
    else {$work = ""; 
} 
///your query should be like this 
$sel2 = "SELECT * FROM `userdata` WHERE `area`='".$area."' ".$work.""; 
//////so if work is not specified then you don't need to select column WORK in the query. So it works as select * from userdata where area='".$area."';"; 

    $res2 = mysqli_query($con,$sel2); 
関連する問題