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

Amit は正しいです。ステートメントは次のようになります。

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

変数は文字列なので、一重引用符で囲む必要があります。これでうまくいくはずです。

于 2012-04-26T13:58:03.017 に答える