下面是我的代码,但我在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'附近使用正确的语法”
需要帮助
答案 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());
答案 3 :(得分:0)
您不能在insert语句中使用where子句。看起来你正在寻找UPDATE查询试试这个
"UPDATE `cafes` SET deal =$deal where id =$id";
答案 4 :(得分:0)
您不要将WHERE与INSERT一起使用,尽管您可以将SELECT与INSERT一起使用,而SELECT可以使用where子句。
答案 5 :(得分:0)
为什么要添加要插入的WHERE?这只是将记录插入表格。