Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Dodanie pierwszej oceny ucznia do bazy danych
Userr
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


Będę miał panel, w którym będą podawał takie dane o uczniu:

Cytat
id ucznia
imię
nazwisko
ocena


Będą dwie tabele:

Cytat
uczniowie - pola:
id
imię
nazwisko


Cytat
oceny - pola:
id
ocena
id_ucznia

Skrypt będzie wykrywał (po id ucznia, czyli po polu id z tabeli uczniowie) czy taki uczeń jest już w tabeli. Jeżeli jest - to po prostu skrypt doda ocenę do tabeli oceny. Jeżeli nie ma, to najpierw doda imię i nazwisko do tabeli uczniowie, a następnie doda ocenę do tabeli oceny.

I właśnie o ten drugi przypadek chciałem zapytać - czy jeżeli napiszę w skrypcie PHP po sobie dwa zapytania MySQL:

  1. $sql = "INSERT INTO uczniowie (imie, nazwisko) VALUES ('Jan', 'Kowalski')";
  2.  
  3. $sql = "INSERT INTO oceny (ocena, id_ucznia) VALUES ('4', '437');
"

to czy jest gwarancja, że jako pierwsze doda się zawsze zapytanie, które jest pierwsze w kodzie (wpis do tabeli uczniowie)? Czy też może się coś zdarzyć (bardzo rzadko, ale jednak), że czasami jako pierwsze doda się zapytanie, które jest niżej w kodzie (wpis do tabeli oceny)? Jeżeli tak, to czy można się przed tym jakoś zabezpieczyć? Czy transakcje mogłyby tutaj pomóc?

Ten post edytował Userr 12.03.2017, 16:16:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Userr
post
Post #2





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


Jeszcze jedna rzecz mnie zastanawia:
  1. /**
  2.  * Connect to MySQL and instantiate the PDO object.
  3.  * Set the error mode to throw exceptions and disable emulated prepared statements.
  4.  */
  5. $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '', array(
  6. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  7. PDO::ATTR_EMULATE_PREPARES => false
  8. ));


http://thisinterestsme.com/php-pdo-transaction-example/

Czy PDO::ATTR_EMULATE_PREPARES => false może jakoś wpłynąć na bezpieczeństwo? Preparowane zapytania chyba służą właśnie ochronie SQL Injection, więc skoro to wyłączę, czy nie wpłynie to na bezpieczeństwo?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.12.2025 - 20:40