czy można jednocześnie tworzyć tabelę SQL i wstawiać dane?

Nov 28 2020

kiedy usunąłem tabelę tworzenia, to działa, ale czy można to zrobić na kodzie?

tutaj jest kod

    $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!";

Oto błąd, gdy nie usunąłem tabeli tworzenia

Błąd: UTWÓRZ TABELĘ student (ID ucznia INT, imię i nazwisko VARCHAR (20), kierunek VARCHAR (20), KLUCZ PODSTAWOWY (student_id)); INSERT INTO student VALUE (2, 'kate', 'sociology')

Masz błąd w składni SQL; sprawdź podręcznik, który odpowiada Twojej wersji serwera MariaDB, aby znaleźć właściwą składnię, której należy użyć w pobliżu „INSERT INTO student VALUE (2,„ kate ”,„ sociology ”) w wierszu 8

Odpowiedzi

2 JM7 Nov 28 2020 at 10:22

Masz 2 literówki w swoim kodzie:

  • Brak ";" między instrukcjami CREATE i INSERT.

  • Instrukcja INSERT używa VALUES, a nie 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')";
    

Poza tym sprawdź oficjalne dokumenty dotyczące instrukcji mysqli Multiple i mysqli_multi_query (), ponieważ jak wspomniano w pierwszym dokumencie:

Funkcje API mysqli_query () i mysqli_real_query () nie ustawiają flagi połączenia niezbędnej do aktywacji wielu zapytań na serwerze. Dodatkowe wywołanie interfejsu API jest używane w przypadku wielu instrukcji, aby zmniejszyć prawdopodobieństwo przypadkowych ataków polegających na wstrzyknięciu kodu SQL.

Możesz też zmienić kod, aby uruchamiać każde zapytanie osobno.