php
  • sql
  • 2012-10-26 184 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语句添加其他子句,查看你的代码。

    相关问题