2016-11-21 1 views
0

テーブルの列名を変数で表現する方法はありますか?SQLクエリで変数にCOLUMN NAMEを表す方法はありますか?

以下の例のように、Switch - case:DATEでは、列(visit_date)を書き込む代わりに、変数$ d_statusを使用します。 ありがとうございました。 PHPで

$s_id = mysql_prep($s_id); 
    $d_status = "visit_date"; 
    $searchby = mysql_prep($searchby); 
    $searchtext = mysql_prep($searchtext); 

    $query = "SELECT * "; 
    $query .= "FROM doctor "; 
    $query .= "WHERE (s_id = $s_id) AND (d_status = '{$d_status}') "; 

    switch ($searchby){ 
     case 'd_name': 
     $query .= "AND (d_name = '{$searchtext}')"; 
     break; 
     case 'd_id': 
     $query .= "AND (d_id = $searchtext)"; 
     break; 
     case 'DATE': 
     $query .= "AND ($d_status = '{$searchtext}')"; 
     break; 
     Default: null; 
     break; 
     $result = mysqli_query($connection, $query); 
     confirm_query($result); 
     return $result; 
    } 
+0

あなたのコードはSQLインジェクションに脆弱です。上記の例では –

答えて

0

(C++ではないような他の言語で)

$myTets = 'DATE' 
    switch ($searchby){ 
     .... 
     case $myTest: 
     echo 'Test OK'; 
     break; 
     ..... 

たり、中に含まれる動の列名が必要な場合は(多くの場合、使用されるが、許可されていない)場合の値の変数の使用を許可されています$ d_statusあなたは文字列のconcatを使用できます

$query .= "AND (" . $d_status ." = '{$searchtext}')"; 
+0

が既に使用されています。上記の例の解決法を提案できますか? @DarshanSuryawanshi。 –

+0

あなたが必要とするものをより良く説明してください。あなたはDATEの事例がすでに使用されているという事実を指していますか? 。または何 .. ? – scaisEdge

+0

私はvar列名の答えを更新しました。 – scaisEdge

関連する問題