2012-07-01 85 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')";