php
  • sql
  • 2012-10-26 236 views -1 likes 
    -1

    可能重複:
    how escape quotes when inserting into database in PHPSQL語法錯誤

    爲什麼這個sql查詢產生這個錯誤?

    $sql_categorybooknumber = "SELECT SUM(items_counter) 
              FROM categories 
              WHERE category_id = '$categoryid' "; 
    

    誤差

    You have an error in your SQL syntax 
    'SELECT SUM(items_counter) FROM categories WHERE category_id = '426' WHER' at line 1 
    

    類別ID在這裏

    elseif ( preg_match($regexComputerProgramingkeyword1, $itemtitle) 
         or preg_match ($regexComputerProgramingkeyword2, $itemtitle) 
         or preg_match($regexComputerProgramingkeyword1, $productsgroupmessage) 
         or preg_match($regexComputerProgramingkeyword2, $productsgroupmessage)) 
    { 
        $categoryid = '426'; 
    } 
    
    +0

    你可以發佈你的其他代碼嗎?至少你定義了'$ categoryid'的部分以及你查詢數據庫的地方。 – andrewsi

    +1

    而您查詢數據庫的代碼?它看起來像是將一個額外的WHERE連接到查詢的末尾。 – andrewsi

    回答

    0

    定義,我不認爲你需要周圍$category_id報價。這是一個數值嗎?

    +0

    是的,這是我嘗試它沒有引號,並得到了這個錯誤'SELECT SUM(items_counter)FROM categories WHERE category_id = 426 WHERE' –

    +1

    看起來像你在代碼中定義$ category_id作爲字符串以及。嘗試將它定義爲int並查看你得到了什麼...或者它只是需要被轉義。 – djjolicoeur

    0

    我猜category_idINT值。單引號分隔SQL中的字符串,所以它試圖查找只有整數的字符串,因此是錯誤。試試這個查詢:

    SELECT SUM(items_counter) FROM categories WHERE category_id=$categoryid 
    

    而且,當你聲明$categoryid,這樣做這樣的(注意缺少引號):

    $categoryid = 426; 
    

    如果不工作,確保items_counternumeric field

    作爲一個旁註,將變量直接放入SQL查詢中是一個非常糟糕的想法™。請閱讀PDO,這很棒。

    0

    你的錯誤說,這意味着你在某種程度上重寫where子句,確保你沒有爲你的MySQL語句添加其他子句,查看你的代碼。

    相關問題