0

No sé, porque ocurre esto, ya que en el código php, yo los inserto en su columna correspondiente. Si alguien me podría explicar, porque sucede esto, y como arreglarlo para que todos los valores estén en un sola fila organizados se lo agradecería mucho

Nota: No sé si necesiten mi código php

PHP

<?php
if(isset($_POST['insert']))
{
 $conn= mysqli_connect("localhost", "root","","datos3");
 $query= "INSERT INTO other_fields(books) VALUES('".$_POST["insert"]."') ";
 $result = mysqli_query($conn, $query);
 echo "Data Inserted Succesfully";
}

if(isset($_POST['insert1']))
{
  $conn1= mysqli_connect("localhost", "root","","datos3");
  $query1= "INSERT INTO other_fields(concrets) VALUES('".$_POST["insert1"]."') ";
  $result1 = mysqli_query($conn1, $query1);
  echo "Data Inserted Succesfully";
}

if(isset($_POST['insert2']))
{
  $conn2= mysqli_connect("localhost", "root","","datos3");
  $query2= "INSERT INTO other_fields(trainings) VALUES('".$_POST["insert2"]."') ";
  $result2 = mysqli_query($conn2, $query2);
  echo "Data Inserted Succesfully";
}

if(isset($_POST['insert3']))
{
  $conn3= mysqli_connect("localhost", "root","","datos3");
  $query3= "INSERT INTO other_fields(curriculum) VALUES('".$_POST["insert3"]."') ";
  $result3 = mysqli_query($conn3, $query3);
  echo "Data Inserted Succesfully";
}

if(isset($_POST['insert4']))
{
  $conn4= mysqli_connect("localhost", "root","","datos3");
  $query4= "INSERT INTO other_fields(class_observations) VALUES('".$_POST["insert4"]."') ";
  $result4 = mysqli_query($conn4, $query4);
  echo "Data Inserted Succesfully";
}

if(isset($_POST['insert5']))
{
  $conn5= mysqli_connect("localhost", "root","","datos3");
  $query5= "INSERT INTO other_fields(interventions) VALUES('".$_POST["insert5"]."') ";
  $result5 = mysqli_query($conn5, $query5);
  echo "Data Inserted Succesfully";
}

if(isset($_POST['insert6']))
{
  $conn6= mysqli_connect("localhost", "root","","datos3");
  $query6= "INSERT INTO other_fields(testing) VALUES('".$_POST["insert6"]."') ";
  $result6 = mysqli_query($conn6, $query6);
  echo "Data Inserted Succesfully";
}
?>

Esto es lo que aparece

Marinovsky
  • 23
  • 6
  • Tu pregunta no es clara, no especificas el contenido ni el formato de los valores en $_POST["insert"]. Cuando hagas una pregunta proporciona la cantidad mínima de código que reproduce el problema e intenta explicar que hace https://es.stackoverflow.com/help/how-to-ask – Absalon Castañon Nov 22 '17 at 15:55
  • *¿Por qué no se guardan los datos en una sola fila?* Porque cada sentencia `INSERT` sirve para guardar una fila separada. Si quieres una sola fila, debes ejecutar una sola sentencia `INSERT` con todos los valores deseados. – sstan Nov 22 '17 at 15:55
  • Gracias a @AbsalonCastañon , voy a tenerlo en cuenta – Marinovsky Nov 22 '17 at 16:02
  • @sstan en dónde puedo investigar para utilizar un solo INSERT para cada sentencia? – Marinovsky Nov 22 '17 at 16:03
  • No es necesariamente el mejor lugar para aprender, pero debe ser suficiente para lo que necesitas: https://www.w3schools.com/sql/sql_insert.asp. – sstan Nov 22 '17 at 16:06
  • [Este es el enlace **oficial** de MySQL sobre INSERT](https://dev.mysql.com/doc/refman/5.7/en/insert.html). Está en inglés, si no sabes al menos leer inglés, aprende, de lo contrario pasarás trabajo en este mundo de la programación. Para estas cosas fáciles, hay también documentación en castellano, [por ejemplo aquí](http://mysql.conclase.net/curso/?cap=008), pero no siempre será así. Las sentencias INSERT son de lo más fácil, tienes que poner en una sola sentencia **todas las columnas y sus respectivos valores**: **`INSERT INTO tabla (col1, col2...) VALUES (valor-col1, valor-col2...)`**. – A. Cedano Nov 22 '17 at 16:07
  • Muchas gracias a todos ustedes por sus consejos, voy a tenerlos en cuenta – Marinovsky Nov 22 '17 at 16:09
  • Advertencia: [¿Qué es la inyección SQL y cómo puedo evitarla?](https://es.stackoverflow.com/questions/10518/qu%C3%A9-es-la-inyecci%C3%B3n-sql-y-c%C3%B3mo-puedo-evitarla) – sstan Nov 22 '17 at 17:23

2 Answers2

1

El error es que ejecutas un comando insert por cada parametro que tienes. La manera correcta de hacer un insert es especificando los parametros que vas a insertar y colocarlos en el mismo insert, por ejemplo:

 INSERT INTO other_fields (BOOKS,CONCRETS,TRAINNIGS,CURRICULUMS)
                   VALUES ('".$_POST["insert1"]."','".$_POST["insert2"]."','".$_POST["insert3"]."','".$_POST["insert4"]."')

Y si necesitas insertar mas campos especificalos en los parámetros de la tabla y agregalos en la lista de valores

0

Por q estas generando una consulta diferente por cada columna q se guarda. Una sugerencia adicional es q no es necesario crear una conexión por cada consulta, mi código sugerido para la solución es el siguiente:

<?php
$conn= mysqli_connect("localhost", "root","","datos3");
$campos="";
$datos="";
if(isset($_POST['insert']))
{
    $campos.= "books,";
    $datos.="'".$_POST["insert"]."',";
}

if(isset($_POST['insert1']))
{
    $campos.= "concrets, ";
    $datos.="'".$_POST["insert1"]."', ";
}

if(isset($_POST['insert2']))
{
    $campos.= "Itrainings, ";
    $datos.="'".$_POST["insert2"]."', ";
}

if(isset($_POST['insert3']))
{
    $campos.= "curriculum, ";
    $datos.="'".$_POST["insert3"]."', ";
}

if(isset($_POST['insert4']))
{
    $campos.= "class_observations, ";
    $datos.="'".$_POST["insert4"]."', ";
}

if(isset($_POST['insert5']))
{
    $campos.= "interventions, ";
    $datos.="'".$_POST["insert5"]."', ";
}

if(isset($_POST['insert6']))
{  
    $campos.= "testing, ";
    $datos.="'".$_POST["insert6"]."', ";
}
if($campos!=''){
    $query="INSERT INTO other_fields(".substr($campos,0,-1).") VALUES(".substr($datos,0,-1).") ";
    $result6 = mysqli_query($conn, $query);
    echo "Data Inserted Succesfully";
}

?>
Andnv
  • 26
  • 3
  • Advertencia: [¿Qué es la inyección SQL y cómo puedo evitarla?](https://es.stackoverflow.com/questions/10518/qu%C3%A9-es-la-inyecci%C3%B3n-sql-y-c%C3%B3mo-puedo-evitarla) – sstan Nov 22 '17 at 17:23