我有一个函数,它将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方法的示例.