Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Prepared statement w MySQLI
Forum PHP.pl > Forum > Przedszkole
zdziwiony
Cześć! Czy ktoś mógłby mi wyjasnić następujący fenomen. Mam taki oto sobie fragment kodu:

  1. $stmt = $sql -> prepare('insert into users values (null, 0, ?, ?, null, ?, ?, 0, 5, 0, ?, ?)');
  2. $stmt -> bind_param('sssssd', $_save['login'], $_save['pass'],
  3. $_save['imie'], $_save['nazwisko'], $_save['code'],
  4. $_save['mailing']);
  5. $stmt -> execute();


Obiekt $sql to obiekt klasy MySQLI. W momencie wywołania tego kodu zmienna $stmt przyjmuje wartość NULL, przy czym MySQLI nie zwraca żadnego błędu ($sql->error). Skoro $stmt jest NULL no to wiadomo, że dalsza część tego kodu leży.

Poszedłem dalej i wywołałem sobie kod:

  1. var_dump($sql -> prepare('insert into table values (null, 0, ?, ?, null, ?, ?, 0, 5, 0, ?, ?)'));


O dziwo var_dump() zwrócił mi informacje o poprawnym obiekcie typu mysqli_stmt, a więc niby wszystko ok.

Idąc dalej wywołanie takiego kodu

  1. var_dump($stmt = $sql -> prepare('insert into table values (null, 0, ?, ?, null, ?, ?, 0, 5, 0, ?, ?)'));


Załatwia sprawę i skrypt o dziwo zaczyna chodzić. Tylko, że ja nie wiem o chodzi...
Gość
Badając temat dalej, zauważyłem, że wystarczy powtórzy wykonanie pierwszje linijki, czyli:

  1. $stmt = $sql -> prepare('insert into users values (null, 0, ?, ?, null, ?, ?, 0, 5, 0, ?, ?)');


I skrypt od razu zaczyna działać. Dlaczego, musi to byc wywołane dwa razy?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.