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 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''td_events' where event_id = '394')、'email@hotmail.com'、'Full Name'、'Atl' 附近使用正确的语法

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 回答