Error de sintaxis SQL en Insertar y seleccionar consulta anidada

Tengo esta consulta:

$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());

pero recibo el siguiente error cuando ejecuto la aplicación

Error: tiene un error en su sintaxis SQL; Consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de ''td_events' donde event_id = '394'), 'email@hotmail.com', 'Full Name', 'Atl' en la línea 1

preguntado el 01 de julio de 12 a las 17:07

¿Por qué no seleccionar primero los valores y luego insertarlos? Estás intentando demasiado con esa consulta. -

Cambiar 'td_events' a `td_events` -

Por favor, use MySQLi or PDO; La extensión MySQL está en desuso y ya no debe utilizarse. -

3 Respuestas

No necesitas ' para el nombre de la tabla cuando desee usar comillas, debe usar `

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

Y, por favor, eche un vistazo a las inyecciones de SQL y la seguridad.

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

Respondido 01 Jul 12, 17:07

El td_event es un nombre de campo en lugar de un valor. Escápalo con un apóstrofo.

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

Respondido 01 Jul 12, 17:07

Asegúrese de que sus valores estén escapados. Puede ejecutarlos a través de: mysql_real_escape_string() para hacerlo.

Respondido 01 Jul 12, 17:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.