2012-07-01 49 views
1

我有这个疑问:SQL语法错误插入,然后选择嵌套查询

$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服务器版本相对应的手册,以便在''td_events'处使用正确的语法,其中event_id ='394'),'[email protected]','全名','Atl'第1行

+0

为什么不先选择值然后插入它们?你用这个查询太多了。 – Brendan

+0

将''td_events''改为'\'td_events \'' – HanhNghien

+1

请使用[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO](http:// php达网络/手动/ EN/book.pdo.php); ** MySQL扩展已弃用,不应再使用。** – Bojangles

回答

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)."')"; 
0

确保您的值已被转义。你可以运行它们:mysql_real_escape_string()这样做。

+0

它们已被转义,谢谢 – dansasu11

1

td_event是一个字段名称,而不是一个值。用撇号逃脱它。

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