我有一个将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视为字符串?
答案 0 :(得分:6)
易。 不要引用,因为'NULL'
始终是一个字符串而NULL
是..好吧,NULL。
如何?使用占位符即准备语句。
这将处理任何引用(根据需要)和防止SQL注入攻击。取胜。
请参阅How can I prevent SQL injection in PHP?,其中包含有关编写安全查询的信息,并提供了mysqli和PDO方法的示例。