Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] error de sintaxis en un foreach

Estas en el tema de error de sintaxis en un foreach en el foro de PHP en Foros del Web. Hola amigos/as, a ver si me pueden ayudar con esto, estoy seguro que es un error de sintaxis pero os aseguro que lo he probado ...
  #1 (permalink)  
Antiguo 21/03/2015, 05:42
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
error de sintaxis en un foreach

Hola amigos/as, a ver si me pueden ayudar con esto, estoy seguro que es un error de sintaxis pero os aseguro que lo he probado todo lo que se , y no se donde esta el fallo.

Yo lo veo bien escrito.

es en la parte de php de una sentencia sql. concretamete la parte del "foreach", que debe mostrar los indices de los valores de un array previamente indicado, miren:

Código PHP:
Ver original
  1. $array_datos = array('nombre'=>'$nombre', 'caracteristicas'=>'$caracteristicas','antiguedad'=> '$antiguedad');
  2.  
  3.  
  4. $sql="INSERT INTO " . $nombre_tabla . " ('".foreach($array_datos as $k => $v){$k;}."') VALUES
  5.                    
  6. ('". implode(', ', $array_datos)."') ";


La cuestion es que pruebo el foreach a parte y funciona bien. pero en la sentencia sql , no funciona.

Creo que faltaran o sobraran unas comillas pero no veo donde , en serio.

¿?
  #2 (permalink)  
Antiguo 21/03/2015, 07:26
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: error de sintaxis en un foreach

No está bien que concatenes texto con una estructura. Mejor forma una cadena dentro de bucle y concatenas el resultado a la cadena de la consulta.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 21/03/2015, 08:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: error de sintaxis en un foreach

@mensajeescrito: No abras nuevos hilos para el mismo tema...

http://www.forosdelweb.com/f18/bucle...a-sql-1123578/

Eso está expresamente prohibido en las PDU de Foros del Web, y a esta altura ya lo sabes.
SI tienes problemas con la sintaxis, te recomiendo que uses algún editor con corrector sintáctico, por lo menos al estilo del NetBeans, que te permita ver los errores al mismo tiempo que lo escribes.

Evitarás preguntar tropezar constantemente con las mismas piedras básicas.

@paketetrueke ya te había aclarado donde estaba tu error:

Cita:
Iniciado por pateketrueke Ver Mensaje
El error te dice que la variable que usas en el foreach() no es un array, así que $array_datos seguramente no es lo que tu crees que es.
[...]
Simplemente no puedes poner un foreach() alli porque un foreach no devuelve ningun array, aunque internamente procese uno. Eso es porque un foreach() es un proceso, no una función.
¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 21/03/2015, 08:38
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: error de sintaxis en un foreach

Alguien, que no fui yo, marco mi hilo como solucionado.

Asi que pense que no podia escribir mas en el.

Situacion que nunca se me presento en el pasado, (ya ves a esta altura no me habia pasado).


En este momento no se si debo escribir aqui, o en el anterior post, tu diras.

Borra este hilo o lo que consideres mas adecuado.

No vaya a contradecir de nuevo a PDU.


Lo unico que pretendo es meter el contenido de un foreach dentro de donde lo necesito

en la sentencia sql.


En fin, un saludo a la comunidad.
  #5 (permalink)  
Antiguo 21/03/2015, 08:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: error de sintaxis en un foreach

Vamos a ver si se entiende de una sola vez:
No puedes poner el foreach en ese contexto, es imposible, porque el foreach no es una función que devuelva ningún valor, por lo que no puedes encadenarlo en una variable.

¿Te queda claro?

Puedes usar el foreach() para cargar una variable con algo, y luego encadenas esa variable al resto. Pero no el foreach() en esa forma.

¿Qué parte no se entiende de que lo que haces no es posible?
¿Por crees qué necesitas hacerlo de ese modo? Eso, suponiendo que existiese la forma de lograrlo.

Por cierto, ya te explicamos un modo de lograrlo de forma eficiente, sin necesidad del foreach(). ¿Le viste algún problema, o es que quieres el foreach() para experimentar?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 21/03/2015, 08:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: error de sintaxis en un foreach

Cita:
Lo unico que pretendo es meter el contenido de un foreach dentro de donde lo necesito
Eso ya lo hemos entendido, sólo necesitas entender lo siguiente:

Código PHP:
Ver original
  1. // MAL
  2. $array_datos = array('nombre'=>'$nombre', 'caracteristicas'=>'$caracteristicas','antiguedad'=> '$antiguedad');
  3. $sql="INSERT INTO " . $nombre_tabla . " ('".foreach($array_datos as $k => $v){$k;}."') VALUES('". implode(', ', $array_datos)."') ";

Eso te lo acabas de inventar, dicha sintaxis no funcionará jamás.

Código PHP:
Ver original
  1. // BIEN
  2. $sql = "INSERT INTO " . $nombre_tabla . " (";
  3. $sql .= implode(', ', array_keys($array_datos));
  4. $sql .= ") VALUES('". implode("', '", $array_datos)."') ";
  5.  
  6. echo $sql;

La cosa, es veo que es tu principal problema, es que te imaginas cosas fuera de este mundo, sin respetar sintaxis ni revisar el manual, etc.

¿Así es como acostumbras resolver tus problemas regularmente?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 21/03/2015, 12:40
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: error de sintaxis en un foreach

Si, lo reconozco, soy tan cabezón en mis ideas

que tengo que guardar equilibrio para no

caerme de cabeza con los pies para arriba.

Pero siempre con buena fe, aunque a veces desquicie.

Procuro agotar todas las vías, incluyendo el manual,

antes de preguntar en el foro.

Aunque pueda parecer lo contrario, nada mas lejos de la realidad.



A lo largo de este post (y del otro)

me ha costado no pensar que estaba siendo víctima de una

conversación con el doctor tangalanga "tarufeti" por el trato ,aveces, tan incomodo.


No es justificable que ningún usuario se merezca que

ningún moderador de foros del web le diga frases como:


---Comienzo algunas citas:

¿Así es como acostumbras resolver tus problemas regularmente?

¿Te queda claro?

¿Qué parte no se entiende de que lo que haces no es posible?

La cosa, es veo que es tu principal problema, es que te imaginas cosas fuera de este mundo

y el mal uso excesivo de la ironia, rayando el mal gusto.

---Fin de las citas.


Conclusión, conocimientos y respeto, no necesariamente van de la mano.



Dicho lo cual que duda cabe que sin la ayuda de "pateketrueke" y "gnzsoloyo"

no abría podido terminar con éxito, definitivamente el código que llevaba entre manos.

A los cuales les doy las gracias.


La intención era hacer una sentencia sql que mediante php me valiera para

cualquier inserción de datos, tan solo modificando el array.

Sin tener que modificar los datos en la sentencia sql + los parámetros del método que

la contiene.

Esto aplicado a todos los métodos de la clase que las contiene es un ahorro

grande de tiempo para mi, y para proyectos futuros.

Ojala el código resultante, sirva a otros.

Un cordial saludo a la comunidad.

Etiquetas: foreach, sintaxis, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:18.