[英]Syntax error at update query where clause mysql
if(isset($_POST['Update'])) {
$placename = $_POST['placename'];
$description = trim(addslashes($_POST['description']));
$hotel = $_POST['hotel'];
$transport = $_POST['transport'];
$map = $_POST['map'];
$sqlp = "UPDATE places SET placename = $placename, description = $description, hotel = $hotel, transport = $transport, map = $map WHERE place_id = ". $sPlace['place_id'];
connection();
if(mysql_query($sqlp)) {
echo "Successfully Updated";
} else {
echo mysql_error();
}
}
错误消息如下 -
您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在'附近使用正确的语法
map
= map WHERE place_id = 54'在第1行
您在该代码中的错误是您没有在变量周围添加引号,它应该是这样的:
$query = "UPDATE `table` SET `name`='".mysqli_real_escape_string($_POST['name'])."' WHERE `id`=1";
但是请尝试将PDO与事务一起使用,因为您可以调试任何错误,而不必担心SQL注入。
试试这个:(你会看到错误,如果不正常,它会回滚)
$db = new PDO('mysql:host=localhost;dbname=databaseName', 'username', 'password', array(PDO::ATTR_EMULATE_PREPARES => false));
$placename = $_POST['placename'];
$description = trim(addslashes($_POST['description']));
$hotel = $_POST['hotel'];
$transport = $_POST['transport'];
$map = $_POST['map'];
try {
$db->beginTransaction();
$stmt = $db->prepare("UPDATE `places` SET `placename`=:placename, `description`=:description, `hotel`=:hotel, `transport`=:transport, `map`=:map WHERE `place_id`=:place_id");
$stmt->execute(array(':placename' => $placename, ':description' => $description, ':hotel' => $hotel, ':transport' => $transport, ':map' => $map, ':place_id' => $sPlace['place_id']));
$db->commit();
} catch(PDOException $ex) {
$db->rollBack();
echo $ex->getMessage();
}
您的SQL语法中有错误...' map = map WHERE place_id = 54'在第1行
map = map
< - 无效。 右侧应该是一个sql值(引用字符串,数字等)。 也许map = 'map'
(引用值)是预期的结果?
您看到的问题已经出现,因为没有引用任何字符串文字,因此$transport
的值中的逗号被评估为SQL SET
子句之间的分隔符,因此会导致您看到的语法错误。
你应该引用你的字符串文字 - 或者更好,使用参数化语句,这样你的变量就不会被SQL评估(这避免了所有形式的SQL注入攻击)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.