é possível criar tabela SQL e inserir dados ao mesmo tempo?

Nov 28 2020

quando removi a tabela de criação, ela está funcionando, mas é possível fazer isso no código?

aqui está o 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!";

Aqui está o erro quando eu não removi a tabela de criação

Erro: CREATE TABLE aluno (aluno_id INT, nome VARCHAR (20), principal VARCHAR (20), PRIMARY KEY (aluno_id)); INSERT INTO student VALUE (2, 'kate', 'sociology')

Você tem um erro em sua sintaxe SQL; verifique o manual que corresponde à sua versão do servidor MariaDB para obter a sintaxe correta para usar próximo a 'INSERT INTO student VALUE (2,' kate ',' sociology ')' na linha 8

Respostas

2 JM7 Nov 28 2020 at 10:22

Você tem 2 erros de digitação em seu código:

  • Ausência de ";" entre as instruções CREATE e INSERT.

  • A instrução INSERT usa VALUES, não 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')";
    

Afora isso, verifique os documentos oficiais para instruções múltiplas de mysqli e mysqli_multi_query (), conforme mencionado no primeiro documento:

As funções da API mysqli_query () e mysqli_real_query () não definem um sinalizador de conexão necessário para ativar consultas múltiplas no servidor. Uma chamada de API extra é usada para várias instruções para reduzir a probabilidade de ataques de injeção de SQL acidentais.

Ou você também pode alterar seu código para executar cada consulta individualmente.