問題のステートメントは次のとおりです。
$sql="SELECT * FROM user WHERE id = '".$q."'";
q は整数です。次のように入力できるのに、なぜそのように入力するのですか
$sql="SELECT * FROM user WHERE id = $q";
これは整数であるため、引用符を正しく使用する必要はありません。または、引用符が必要な場合でも、1 組だけでよいわけではありません。の意味は何'".$var_name."'
ですか?
問題のステートメントは次のとおりです。
$sql="SELECT * FROM user WHERE id = '".$q."'";
q は整数です。次のように入力できるのに、なぜそのように入力するのですか
$sql="SELECT * FROM user WHERE id = $q";
これは整数であるため、引用符を正しく使用する必要はありません。または、引用符が必要な場合でも、1 組だけでよいわけではありません。の意味は何'".$var_name."'
ですか?
は必要ありません''
が、 と組み合わせ*real_escape_string
て有効にするには、これらの一重引用符が必要です。
ユーザー入力が:1 OR 1 = 1
の場合、クエリは次のようになります。
SELECT * FROM user WHERE id = 1 OR 1 = 1
テーブル全体を選択するもの。
ただし、一重引用符を使用し*real_escape_string
、ユーザー入力が1' OR '1' = '1
の場合、クエリは次のようになります。
SELECT * FROM user WHERE id = '1\' OR \'1\' = \'1'
テーブル全体を選択するのではなく、1 つの ID だけを選択します。
tl;dr: 必要ありませんが、SQL インジェクションに対してコードを安全にします。