

以下のようなプリペーアドステートメントを作りました。  
id:int型、name:varcher型、area:int型です。  
areaは1～10までの数値で住んでいる地位を表すとします。  
例えば1=関東、2=関西、3=四国、...

この場合すべての地域のユーザーデータを取得する場合はどのようにすればいいのでしょうか。

例えば

[code]

    if($area==0){
      $db->query("SELECT id, name FROM user");
    }else{
      $ps=$db->prepare("SELECT id, name FROM user WHERE area = :area");
      $ps->bindValue(':area', (int)$area, PDO::PARAM_INT);
      $ps->execute();
    }
    
[/code]

のようにしてもセキュリティ的に問題ないでしょうか？


CC BY-SA 3.0
2016-06-16T05:56:00.067
26780
2016-06-16T09:07:24.903
2016-06-16T07:18:39.960
3516
15279
question
php mysql security
PHP MySQL プリペアードステートメントのセキュリティについて


結論から言うと、記載内容の実装でも別に問題ないと思います。

[code]

    $db->query("SELECT id, name FROM user");
    
[/code]

上記、特にセキュリティ的な問題はないと思います。  
※サンプルということなので細かい話は一旦置きます。

ひとつのSQLでまとめるならOR句を使ってやればできると思います。


CC BY-SA 3.0
2016-06-16T09:07:24.903
26785
2016-06-16T09:07:24.903
16781
26780
answer