0

从我的 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

我可以看到正在传递正确的数据,但语法错误。任何人都可以帮忙吗?

4

3 回答 3

2

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

title = '$check_value'

出于安全目的,您还应该使用mysql_real_escape_string您拥有的所有字符串参数。或者更好的是,使用准备好的语句: http: //php.net/manual/en/pdo.prepared-statements.php

于 2012-04-26T13:56:31.393 回答
1

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

根据您使用的服务器(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));
于 2012-04-26T13:59:51.660 回答
0

阿米特是正确的,你的陈述应该是这样的;

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

变量是一个字符串,所以必须用单引号括起来。这应该对你有用。

于 2012-04-26T13:58:03.017 回答