Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]mysqli wywala Undefined variable: db
casperii
post 3.02.2016, 00:07:43
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Panowie, próbuje rozgryźć mysqli , o to kod:

index.php:

  1. ini_set('display_errors', 1);
  2. header('Content-type: text/html; charset=utf-8');
  3. require_once("./db.php");
  4. $db = new mysqli($dbhost, $dbname, $dbpass, $dbuname);
  5. $db -> query("SET NAMES 'utf8'");
  6. include('auth.php');
  7. if($db->connect_error) {
  8. die('Nie można się połączyć z bazą ('.$db->connect_errno.') '. $db->connect_error);
  9. if (mysqli_connect_error()){
  10. die('Nie można się połączyć z bazą (' . mysqli_connect_errno() . ') '
  11. . mysqli_connect_error());
  12. }
  13. }else{
  14.  
  15.  
  16. //dalszy kod
  17.  
  18. }
  19.  
  20. ?>



oraz kod auth.php

  1. function zalogowany(){
  2. $query = $db->query("SELECT * FROM `users` WHERE `login` = '".$login."'");
  3. }


Niestety ale powyższy kod wywala mi:
Notice: Undefined variable: db in... auth.php
Fatal error: Call to a member function query() on a non-object in .. auth.php

Co robię źle panowie ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
markuz
post 3.02.2016, 02:19:37
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Zmienna $db nie jest widoczna w funkcji zaloguj, musisz ją tam przekazać np.
  1. function zalogowany($db, $login) {
  2. $query = $db->query("SELECT * FROM `users` WHERE `login` = '".$login."'");
  3. }


--------------------
Go to the top of the page
+Quote Post
casperii
post 3.02.2016, 08:18:34
Post #3





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@markuz wytłumacz mi proszę, jak może nie być widoczna? skoro w index.php wstawiam auth.php , przecież zmienną $db powinien pobrać z index.php.
Nawet jak wstawie w auth.php:

  1. require_once("./db.php");
  2. $db = new mysqli($dbhost, $dbname, $dbpass, $dbuname);
  3. $db -> query("SET NAMES 'utf8'");


to nadal mam ten sam błąd. Twoja rada żeby wstawić w fukcje zalogowany zmienną $db, wywala bład:

Warning: Missing argument 1 for zalogowany()
Go to the top of the page
+Quote Post
viking
post 3.02.2016, 08:30:10
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


W funkcji zmienna poza zasięgu nie będzie widoczna chyba że przekażesz zalogowany($db){}

http://php.net/manual/en/language.variables.scope.php


--------------------
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 - 06:15