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 回答