¿Es posible crear una tabla SQL e insertar datos al mismo tiempo?

Nov 28 2020

cuando eliminé la tabla de creación, está funcionando, pero ¿es posible hacer esto en el código?

aquí está el código

    $sql = "CREATE TABLE student ( student_id INT, name VARCHAR(20), major VARCHAR(20), PRIMARY KEY(student_id) ) INSERT INTO student VALUE(1, 'Jack', 'biology')"; if ($connect -> query($sql) === TRUE) { echo "New Table Created! <br><br>"; } else { echo "Error : " . $sql . " <br><br>" . $connect -> error . "<br><br>";
    }
    
    echo "Connected Successfully!";

Aquí está el error cuando no eliminé la tabla de creación

Error: CREAR TABLA estudiante (student_id INT, nombre VARCHAR (20), mayor VARCHAR (20), PRIMARY KEY (student_id)); INSERT INTO student VALUE (2, 'kate', 'sociology')

Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MariaDB para conocer la sintaxis correcta para usar cerca de 'INSERT INTO student VALUE (2,' kate ',' sociology ')' en la línea 8

Respuestas

2 JM7 Nov 28 2020 at 10:22

Tiene 2 errores tipográficos en su código:

  • Desaparecido ";" entre las sentencias CREATE e INSERT.

  • La instrucción INSERT usa VALUES, no VALUE.

     $sql = "CREATE TABLE student (
         student_id INT,
         name VARCHAR(20),
         major VARCHAR(20),
         PRIMARY KEY(student_id)
     );
    
     INSERT INTO student VALUES (1, 'Jack', 'biology')";
    

Aparte de eso, verifique los documentos oficiales para mysqli Multiple Statement y mysqli_multi_query () ya que como se menciona en el primer documento:

Las funciones de la API mysqli_query () y mysqli_real_query () no establecen un indicador de conexión necesario para activar múltiples consultas en el servidor. Se utiliza una llamada adicional a la API para varias declaraciones a fin de reducir la probabilidad de ataques de inyección SQL accidentales.

O también puede cambiar su código para ejecutar cada consulta individualmente.