繁体   English   中英

从MySQL删除时出现SQL错误

[英]SQL error when deleting from MySQL

从SQL数据删除数据时遇到问题。 我已经尝试过各种版本的声明,但均无济于事。 以下是我遇到的错误以及我正在使用的语句。

$sql = "DELETE FROM `saved_holidays` WHERE (subscriberID= $user AND title= $check_value)";

//connect to database then execute the SQL statement.
$db->exec($sql);

错误消息是:

 SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@xml119.com AND title= Luxurious Jamaican holidays | 40% Discount On Accommodati' at line 1 

我可以看到传递了正确的数据,但是语法错误。 有人可以帮忙吗?

$check_value是一个字符串,因此必须在查询中将其括在'中,如下所示:

title = '$check_value'

为了安全起见,还应该在拥有的所有字符串参数上使用mysql_real_escape_string 甚至更好的是,使用准备好的语句: http : //php.net/manual/en/pdo.prepared-statements.php

您需要在变量周围加上引号。 它不喜欢空格。

根据所使用的服务器(MySQL或MSSQL),您必须使用反引号,单引号或双引号:

DELETE FROM saved_holidays WHERE (subscriberID="$user" AND title="$check_value")

另外,如果您使用的是PDO,则应考虑使用准备好的语句:

$statment = $conn->prepare("DELETE FORM saved_holidays WHERE (subscriberID=? AND title=?)"); //$conn has to be your connection ceated by doing new PDO(...connection string...)
$statment->execute(array($user, $check_value));

阿米特(Amit)是正确的,您的陈述应如下所示;

$sql = "DELETE FROM `saved_holidays` WHERE (subscriberID= '$user' AND title= '$check_value')";

该变量是一个字符串,因此必须用单引号引起来。 然后,这应该为您工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM