php
  • mysql
  • 2015-09-11 115 views 2 likes 
    2

    過去2個小時我一直卡在這裏,無法看到問題出在這裏。我用:item_quant:item_code取代它們的真實值。查詢返回false

    當添加回顯返回false以查看$item_quant$item_code是否是正確的值時,它將它們顯示爲正確的值。

    $sql = "UPDATE inventory SET item_quant=item_quant+:item_quant WHERE item_code=':item_code' LIMIT 1"; 
        $query = $database->prepare($sql); 
        $result = $query->execute(array(':item_quant' => $item_quant, ':item_code' => $item_code)); 
    
        if ($result) { 
         return true; 
        } 
        return false; 
    

    任何幫助或瞭解爲什麼這將失敗將不勝感激。

    回答

    2

    佔位符不得放在引號內。

    $sql = "UPDATE inventory SET item_quant=item_quant+:item_quant WHERE item_code=:item_code LIMIT 1"; 
    
    +0

    仍然得到同樣的結果。當在phpmyadmin中手動輸入時,因爲它是一個VARCHAR列,所以它需要引號,否則它將不會運行。 編輯:試了一遍,它的工作..我不知道...請拍我。 –

    +0

    這是正確的,手動執行時需要引號,但佔位符會自動處理。 – Barmar

    +0

    @BradleyScott:是的,如果您手動*運行查詢,則需要引用字符串。使用準備好的語句時,不要引用佔位符。運行查詢時,這些值將被解釋爲字符串。 –

    0

    嘗試取出語錄:

    $sql = "UPDATE inventory SET item_quant=item_quant+:item_quant WHERE item_code=:item_code LIMIT 1"; 
    
    +1

    仍然得到相同的結果。當在phpmyadmin中手動輸入時,因爲它是一個VARCHAR列,所以它需要引號,否則它將不會運行。 編輯:試了一遍,它的工作..我不知道...請拍我。 –

    +0

    @BradleyScott我認爲拍攝你可能有點極端;) –

    相關問題