Php 将值设置为NULL,而不是';空';

Php 将值设置为NULL,而不是';空';,php,mysql,sql,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,

我有一个将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


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

简单不要引用它,因为
'NULL'
总是一个字符串,
NULL
是。。嗯,零

怎么做?使用占位符或准备语句

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


请参阅其中包含的有关编写安全查询的信息,以及mysqli和PDO方法的示例。

简单不要引用它,因为
'NULL'
总是一个字符串,
NULL
是。。嗯,零

怎么做?使用占位符或准备语句

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


请参阅其中包含的有关编写安全查询的信息以及mysqli和PDO方法的示例。

当您尝试将PHP null插入查询字符串时,它将转换为空字符串。由于您的代码到处都在使用
,因此如果不重新构建查询字符串,就无法在该字符串中插入实际的sql“null”。当您尝试将PHP null插入查询字符串时,它将转换为空字符串。由于您的代码到处都在使用
,因此,如果不重新构建查询字符串,就无法在该字符串中插入实际的sql“null”。好的,我刚刚浏览了网上的几篇文章,当我有一个重复的键并且我使用占位符时会发生什么情况?@mk_89与没有占位符的情况相同:)但是,虽然我坚持我的答案作为一般解决方案,但很可能变量,例如$condition已经包含字符串值
NULL
(例如
$condition=“NULL”
)。请务必解决这个问题。好的,我刚刚浏览了网上的几篇文章,当我有一个重复的键并且我使用占位符时会发生什么?@mk_89与没有占位符时是一样的:)然而,虽然我坚持我的答案作为一般解决方案,但很可能变量,例如,$condition已经包含字符串值
NULL
(例如
$condition=“NULL”
)。也要确保解决这个问题。
addItem("id1", "site1", 100, NULL, "NULL", "NULL", "NULL", "NULL", "NULL", "NULL",);