Programación Web y Scripting > PHP

 Insertar Sentencias Sql Completas Desde Php

(1/2) > >>

RadicalEd:
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 ---&#60;?php&#036;sql = &#036;_POST['sqlinfo'];echo &#036;sql;&#036;link=mysql_connect(&#34;localhost&#34;, &#34;user&#34;, &#34;pass&#34;);mysql_select_db(&#34;database&#34;,&#036;link);&#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());?&#62; 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
--- Fin de la cita ---
No se si me hice entender, pero si algo pregunten.

Gracias Chao.

ibito:
Intenta ésto:

--- Código: Text ---  &#60;html&#62;&#60;body&#62;&#60;?phpif(isset(&#036;_POST['sqlinfo'])) {  echo '&#036;_POST[&#092;'sqlinfo&#092;']: '.&#036;_POST['sqlinfo'].&#34;&#60;br&#62;&#60;br&#62;&#34;;  echo 'stripslashes(&#036;_POST[&#092;'sqlinfo&#092;']): '.stripslashes(&#036;_POST['sqlinfo']);  echo &#34;&#60;br&#62;&#60;br&#62;&#34;;}?&#62;&#60;form method=&#34;post&#34; action=&#34;&#34; name=&#34;form1&#34;&#62;&#60;textarea name=&#34;sqlinfo&#34; id=&#34;sqlinfo&#34; rows=&#34;3&#34; cols=&#34;80&#34;&#62;INSERT INTO &#96;colegio&#96; VALUES (1, 'guillo');INSERT INTO &#96;colegio&#96; VALUES (2, 'daniel');INSERT INTO &#96;colegio&#96; VALUES (3, 'adfas');INSERT INTO &#96;colegio&#96; VALUES (4, 'asdsdg');&#60;/textarea&#62;&#60;br&#62;&#60;input type=&#34;submit&#34; value=&#34;Enviar&#34; /&#62;&#60;/form&#62;&#60;/body&#62;&#60;/html&#62;  
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 --- &#092;'  
La función que ayuda aquí es stripslashes()

RadicalEd:
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
--- Fin de la cita ---

ibito:
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 --- INSERT INTO tabla (cmp1, cmp2)VALUES('1', 'A'),('2', 'B'),('3', 'C')  

RadicalEd:
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

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa