Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prepared statements - mysqli, bind_param przekazywanie zmiennych do zapytania SQL, jedna zmienna jest ok, dwie nie wchodzą
Leopard
post 26.04.2009, 16:18:58
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 2
Dołączył: 20.07.2008

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


Chce wykonać proste zapytanie do bazy, w którym są dwie zmienne ($id, $name):

  1. <?php
  2. $mysqli = new mysqli('localhost', 'root', '', 'test1');
  3. if(mysqli_connect_errno()) {
  4.    throw new Exception(mysqli_connect_error());
  5.    exit();
  6. }
  7. $stmt = $mysqli->prepare("SELECT * FROM TEST WHERE id=? AND name=?");
  8.  
  9. $stmt->bind_param('is', $id, $name);
  10. $id = 1;
  11. $name = 'imie';
  12.  
  13. $stmt->execute();
  14. $stmt->bind_result($id, $first_name, $last_name);
  15. while ($data = $stmt->fetch()) {
  16.    echo $id . $first_name . $last_name . '<br />';
  17. }
  18. ?>


Wyskakuje mi błąd:
Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\eOOP\mysqli.php on line 10
(w linii z bind_param)

Kiedy daje w zapytanie jedną zmienną to wszystko jest ok:

  1. <?php
  2. ...
  3. $stmt = $mysqli->prepare("SELECT * FROM TEST WHERE id=?");
  4.  
  5. $stmt->bind_param('i', $id);
  6. $id = 1;
  7.  
  8. $stmt->execute();
  9. ...
  10. ?>


bind_param z dwoma zmiennymi chyba piszę dobrze bo w manualu jest taki przykład:

  1. <?php
  2. $stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
  3. $stmt->bind_param('sssd', $code, $language, $official, $percent);
  4.  
  5. $code = 'DEU';
  6. $language = 'Bavarian';
  7. $official = "F";
  8. $percent = 11.2;
  9. ?>


Gdzie robię błąd?


--------------------
Once committed to a full attack, only a fatal bullet will stop a charging Leopard.
Piszę poprawnie po polsku.
Go to the top of the page
+Quote Post

Posty w temacie


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 - 12:45