0

データベースの行にvarhcarsと整数を追加する関数があります

public function addItem($id, $site, $price, $quantity, $condition, 
   $sellerName, $sellerRating, $sellerLocation, $description, $link){

   $q = "INSERT INTO tbl_items VALUES(
      '$id',
      '$site',
      $price, 
      $quantity, 
      '$condition',
      '$sellerName',
      $sellerRating,
     '$sellerLocation',
     '$description',
     '$link',
     ".time().")";

  return mysql_query($q, $this->connection);    
}

varchar値をNULLに設定したいと思う場合もありますが、問題は、文字列NULLをパラメータとして送信すると、常に文字列として扱われることです。

例えば

addItem("id1", "site1", 100, NULL, "NULL", "NULL", "NULL", "NULL", "NULL", "NULL",);

クエリでNULLが文字列として扱われないようにするにはどうすればよいですか?

4

1 に答える 1

6

簡単。常に文字列であり、..まあ、NULLであるため、引用しないでください。'NULL'NULL

どのように?プレースホルダー、別名プリペアドステートメントを使用します。

これにより、(必要に応じて)引用符が処理され SQLインジェクション攻撃が防止されます。勝つ。

PHPでSQLインジェクションを防ぐにはどうすればよいですか?を参照してください。これには、安全なクエリの作成に関する情報が含まれており、mysqliとPDOの両方のアプローチの例があります。

于 2012-09-26T18:15:10.237 に答える