1

私はこのクエリを持っています:

$FullName = mysql_real_escape_string($_REQUEST['name']);
$EmailAdd = mysql_real_escape_string($_REQUEST['email_address']);
$City = mysql_real_escape_string($_REQUEST['city']);
$State = mysql_real_escape_string($_REQUEST['state']);

$SqlEInsert= "INSERT INTO `td_email` VALUES ((SELECT ownerid FROM 'td_events' where event_id = '$EvID'),'$EmailAdd','$FullName', '$City'  ,'$State')";

$RsEmail = mysql_query($SqlEInsert) or die('Error :' . mysql_error());

しかし、アプリケーションを実行すると、次のエラーが発生します

エラー:SQL構文にエラーがあります。1行目の「td_events」(event_id = '394')、「email@hotmail.com」、「Full Name」、「Atl」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

4

3 に答える 3

1

td_event値ではなくフィールド名です。アポストロフィでエスケープします。

$SqlEInsert= "INSERT INTO `td_email` VALUES ((SELECT ownerid FROM `td_events` where event_id = '$EvID'),'$EmailAdd','$FullName', '$City'  ,'$State')";
于 2012-07-01T16:08:20.180 に答える
1

引用符を使用する場合は、テーブル名に'は必要ありません。' を使用する必要があります

$SqlEInsert= "INSERT INTO td_email VALUES ((SELECT ownerid FROM td_events WHERE event_id = '$EvID'),'$EmailAdd','$FullName', '$City'  ,'$State')";

そして、SQL インジェクションとセキュリティをご覧ください。

$SqlEInsert= "INSERT INTO td_email VALUES ((SELECT ownerid FROM td_events WHERE event_id = '".(int)$EvID."'),'".mysql_real_escape_string($EmailAdd)."','".mysql_real_escape_string($FullName)."', '".mysql_real_escape_string($City)."'  ,'".mysql_real_escape_string($State)."')";
于 2012-07-01T16:09:00.360 に答える
0

値がエスケープされていることを確認してください。あなたはそれらを実行することができます:mysql_real_escape_string()そうするために。

于 2012-07-01T16:05:29.887 に答える