将值设置为NULL而不是"NULL"

mk_*_*_89 0 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);    
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下我可能会决定将varchar值设置为NULL,但问题是如果我将字符串NULL作为参数发送,它将始终被视为字符串.

例如

addItem("id1", "site1", 100, NULL, "NULL", "NULL", "NULL", "NULL", "NULL", "NULL",);
Run Code Online (Sandbox Code Playgroud)

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

小智 6

简单.不要引用它,因为'NULL'它始终是一个字符串并且NULL是..好吧,NULL.

怎么样?使用占位符即准备语句.

这将处理任何引用(根据需要)防止SQL注入攻击.赢得.

请参阅如何在PHP中阻止SQL注入?其中包含有关编写安全查询的信息,并提供了mysqli和PDO方法的示例.