将值设置为NULL而不是“NULL”

时间:2012-09-26 18:13:43

标签: php mysql sql

我有一个将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作为参数发送,它将始终被视为字符串。

e.g。

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

如何避免在查询中将NULL视为字符串?

1 个答案:

答案 0 :(得分:6)

易。 不要引用,因为'NULL'始终是一个字符串而NULL是..好吧,NULL。

如何?使用占位符即准备语句。

这将处理任何引用(根据需要)防止SQL注入攻击。取胜。

请参阅How can I prevent SQL injection in PHP?,其中包含有关编写安全查询的信息,并提供了mysqli和PDO方法的示例。