• Domingo 22 de Diciembre de 2024, 21:26

Autor Tema:  Insertar Sentencias Sql Completas Desde Php  (Leído 1385 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Insertar Sentencias Sql Completas Desde Php
« en: Martes 7 de Noviembre de 2006, 17:17 »
0
Hola chicos de SoloCodigo, como siempre estoy con dudas...

Tengo que hacer una inserción de datos desde un textarea a una tabla en MySQL, pero el textarea puede tener las sentencias INSERT INTO que quieran, osea, algo así:

<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]INSERT[/color] INTO `colegio` VALUES (1, 'guillo');
[color=blue;font-weight]INSERT[/color] INTO `colegio` VALUES (2, 'daniel');
[color=blue;font-weight]INSERT[/color] INTO `colegio` VALUES (3, 'adfas');
[color=blue;font-weight]INSERT[/color] INTO `colegio` VALUES (4, 'asdsdg'); <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
Y este por medio del mysql_query de php anexarlo a la tabla; estos son los scripts que tengo:
<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1--><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
  <title>SQL Injection</title>
</head>
<body>
<form method="post" action="injectsql.php" name="sqlinjection">
  <div align="left"><textarea cols="100" rows="10" name="sqlinfo"></textarea><br>
  <br>
  <input name="submit" value="Enviar" type="submit">
  </div>
</form>
</body>
</html>
<!--html2--></td></tr></table><div class='postcolor'><!--html3-->
Código: Text
  1. &#60;?php
  2. &#036;sql = &#036;_POST['sqlinfo'];
  3. echo &#036;sql;
  4. &#036;link=mysql_connect(&#34;localhost&#34;, &#34;user&#34;, &#34;pass&#34;);
  5. mysql_select_db(&#34;database&#34;,&#036;link);
  6. &#036;result = mysql_query(&#34;&#036;sql&#34;,&#036;link) or die (&#34;&#60;br&#62;&#60;br&#62;&#60;br&#62;No se pudo ejecutar la accion&#34;.mysql_error());
  7. ?&#62;
  8.  
Y este es el error que saca:
Citar
No se pudo ejecutar la accion You have an error in your SQL syntax near '\'guillo\'); INSERT INTO colegio VALUES (2, \'daniel\'); INSERT INTO colegio V' at line 1
No se si me hice entender, pero si algo pregunten.

Gracias Chao.
El pasado son solo recuerdos, el futuro son solo sueños

ibito

  • Miembro HIPER activo
  • ****
  • Mensajes: 549
  • Nacionalidad: mx
  • Se mas de C++ que lo que se de ese CSS
    • Ver Perfil
    • http://www.ibquezada.com
Re: Insertar Sentencias Sql Completas Desde Php
« Respuesta #1 en: Martes 7 de Noviembre de 2006, 18:12 »
0
Intenta ésto:
Código: Text
  1.  
  2.  
  3. &#60;html&#62;
  4. &#60;body&#62;
  5. &#60;?php
  6. if(isset(&#036;_POST['sqlinfo']))
  7. {
  8.   echo '&#036;_POST[&#092;'sqlinfo&#092;']: '.&#036;_POST['sqlinfo'].&#34;&#60;br&#62;&#60;br&#62;&#34;;
  9.   echo 'stripslashes(&#036;_POST[&#092;'sqlinfo&#092;']): '.stripslashes(&#036;_POST['sqlinfo']);
  10.   echo &#34;&#60;br&#62;&#60;br&#62;&#34;;
  11. }
  12. ?&#62;
  13. &#60;form method=&#34;post&#34; action=&#34;&#34; name=&#34;form1&#34;&#62;
  14. &#60;textarea name=&#34;sqlinfo&#34; id=&#34;sqlinfo&#34; rows=&#34;3&#34; cols=&#34;80&#34;&#62;
  15. INSERT INTO &#96;colegio&#96; VALUES (1, 'guillo');
  16. INSERT INTO &#96;colegio&#96; VALUES (2, 'daniel');
  17. INSERT INTO &#96;colegio&#96; VALUES (3, 'adfas');
  18. INSERT INTO &#96;colegio&#96; VALUES (4, 'asdsdg');&#60;/textarea&#62;&#60;br&#62;
  19. &#60;input type=&#34;submit&#34; value=&#34;Enviar&#34; /&#62;
  20. &#60;/form&#62;
  21. &#60;/body&#62;
  22. &#60;/html&#62;
  23.  
  24.  

El problema radica es que, los TEXTAREA envían la información (por lo menos las comillas simples, las dobles no las intenté) como caracteres de escape, es decir:
una comilla:
Código: Text
  1.  
  2. &#092;'
  3.  
  4.  

La función que ayuda aquí es stripslashes()
______________________________________
www.hazjuegos.com Una comunidad dedicada al desarrollo de videojuegos.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Insertar Sentencias Sql Completas Desde Php
« Respuesta #2 en: Martes 7 de Noviembre de 2006, 20:11 »
0
mmm gracias ibito, no sabia lo del \ del textarea; bueno la función stripslashes me funciono a la perfección, pero si sigo queriendo insertar los datos en la tabla me vuelve a mostrar el mismo error. :(
Que podra ser?

Citar
You have an error in your SQL syntax near 'INSERT INTO colegio (id,nombre) VALUES (2,'daniel') INSERT INTO colegio (id,nom' at line 2
El pasado son solo recuerdos, el futuro son solo sueños

ibito

  • Miembro HIPER activo
  • ****
  • Mensajes: 549
  • Nacionalidad: mx
  • Se mas de C++ que lo que se de ese CSS
    • Ver Perfil
    • http://www.ibquezada.com
Re: Insertar Sentencias Sql Completas Desde Php
« Respuesta #3 en: Martes 7 de Noviembre de 2006, 20:19 »
0
Eso ahora si es error de la consulta SQL

No se si se permita hacer varias sentencias delimitadas por ";" pero cuando yo inserto varios registros, lo hago así:
Código: Text
  1.  
  2. INSERT INTO tabla (cmp1, cmp2)
  3. VALUES
  4. ('1', 'A'),
  5. ('2', 'B'),
  6. ('3', 'C')
  7.  
  8.  
______________________________________
www.hazjuegos.com Una comunidad dedicada al desarrollo de videojuegos.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Insertar Sentencias Sql Completas Desde Php
« Respuesta #4 en: Martes 7 de Noviembre de 2006, 20:38 »
0
Muy buena tu respuesta ibito y lo mejor es que funciona, pero :( , lo que pasa es que la insercción debe ser de esa manera, ya que quienes van ha hacerlo exportaran los datos de la forma que lo hace el phpMyAdmin y pues si me pongo a enseñarles que deben quitar el  INSERT INTO `colegio` VALUES, a mas de 1000 registros, lo primero que van ha hacer es arrearme la madre.

mmmm aunque estoy pensando.... (uy que raro :blink: )

Qué tal si hacen un reemplazar con el notepad?????

Gracias ibito, vamos a ver si por ese lado funciona, sino me va a tocar que joderme con estos locos.
:D  :D
El pasado son solo recuerdos, el futuro son solo sueños

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Insertar Sentencias Sql Completas Desde Php
« Respuesta #5 en: Miércoles 8 de Noviembre de 2006, 15:33 »
0
RadicalEd prová separando las consultas, con la función explode().
por ejemplo:

Citar
$_CONSULTAS = explode(';', $_GET['sqlinfo']);
foreach($_CONSULTAS as $k => $v){
    mysql_query($v);
}

Espero que te sirva.
Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |