2012-09-26 72 views
0

我有增加varhcars和整數到一個數據庫行的功能設定值設置爲NULL,而不是「NULL」

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作爲參數發送,它將始終被視爲字符串。

例如

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

如何避免NULL治療我的查詢字符串?

+1

當您嘗試將PHP插入到查詢字符串中時,PHP null將被轉換爲空字符串。由於您的代碼在每個地方都使用''',因此無法在該字符串中插入實際的sql'null',而無需重新構建查詢字符串。 –

回答

6

簡單。 不要引用它,因爲'NULL'總是一個字符串,NULL是..好,NULL。

怎麼樣?使用佔位符,即準備報表。

這將負責任何引用(根據需要)防止SQL注入攻擊。贏得。

請參閱How can I prevent SQL injection in PHP?,其中包含有關編寫安全查詢的信息並且具有mysqli和PDO方法的示例。

+0

好吧,我只是瀏覽了一些網頁上的文章,當我有一個重複的鍵和im使用佔位符時會發生什麼? –

+0

@ mk_89與沒有佔位符相同的東西:)然而,雖然我支持我作爲一般解決方案的答案,但它很可能是變量,例如$ condition已包含字符串值「NULL」(例如'$ condition =「NULL」')。一定要解決這個問題。 – 2012-09-26 18:25:59