Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Prepared statement w MySQLI
-zdziwiony-
post 15.01.2014, 14:07:33
Post #1





Goście







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 to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
-Gość-
post 15.01.2014, 14:15:07
Post #2





Goście







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?
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 17:28