您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'WHERE`id`附近使用正确的语法

时间:2013-05-16 08:57:44

标签: php mysql sql

下面是我的代码,但我在where子句

上收到错误
<?php

// include db connect class
require_once __DIR__ . '/db_connect.php';

// connecting to db
$db = new DB_CONNECT();

$response = array();

$dom = new DOMDocument();
$dom->loadHTMLFile("http://www.pizzahut.com.pk/deals.html");
//echo $dom->saveHTML();
$table = $dom->getElementsByTagName('td');


for($i = 30; $i < 35; $i++ ){
    $deal = $table->item($i)->nodeValue;
   echo $deal;
}
$id = 1813660169;
$result = mysql_query("INSERT INTO cafes(deal)
        VALUES('$deal') WHERE `id` = " .$id) or die(mysql_error());


echo mysql_num_rows($result); 

if ($result) {
        // successfully inserted into database
        $response["success"] = 1;
        $response["message"] = "Place successfully created.";

        // echoing JSON response
        echo json_encode($response);
    } else {
        // failed to insert row
        $response["success"] = 0;
        $response["message"] = " ID already inserted";

        // echoing JSON response
        echo json_encode($response);
    }


?>

错误是“您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以便在第2行的'WHERE id = 1813660169'附近使用正确的语法”

需要帮助

6 个答案:

答案 0 :(得分:6)

不能在基本WHERE语法中包含INSERT子句。你真正想要的是,我认为,是一个UPDATE陈述,

UPDATE cafes SET deal = '$deal' WHERE id = $id

作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

答案 1 :(得分:2)

插入语句没有指定where子句,该行还不存在,因此无法匹配。

$result = mysql_query("INSERT INTO cafes(deal)
        VALUES('$deal')) or die(mysql_error());

以下是MySql网站上插入语句的基本语法:

  

INSERT [LOW_PRIORITY |延迟| HIGH_PRIORITY] [IGNORE]       [INTO] tbl_name [(col_name,...)]       {VALUES | VALUE}({expr | DEFAULT},...),(...),...       [ON DUPLICATE KEY UPDATE         COL_NAME = EXPR           [,col_name = expr] ...]

请注意,原理图不包含where子句。

答案 2 :(得分:0)

您应该使用引号''包围变量,只需更改为

即可
WHERE `id` = '" .$id."'")

根据建议,您无法在WHERE个查询中使用INSERT,但您应该使用UPDATE查询,因此语法应如下所示:

$result = mysql_query("UPDATE cafes set deal = '$deal' WHERE `id` = '" .$id."'") or die(mysql_error());    

然后我希望您记住mysql_*函数已被弃用,因此我建议您切换为mysqliPDO

答案 3 :(得分:0)

您不能在insert语句中使用where子句。看起来你正在寻找UPDATE查询试试这个

"UPDATE `cafes` SET deal =$deal where id =$id";

答案 4 :(得分:0)

您不要将WHERE与INSERT一起使用,尽管您可以将SELECT与INSERT一起使用,而SELECT可以使用where子句。

答案 5 :(得分:0)

为什么要添加要插入的WHERE?这只是将记录插入表格。