Почему запрос в бд из функции не посылается?

Пэлт

PHP:
  1. $other = mysqli_fetch_assoc(mysqli_query($link, «SELECT * FROM `peoples` WHERE `id` = ‘».$id.«‘ LIMIT 1»));

в коде просто сработает,
а если…

PHP:
  1. function get_people($id){
  2. $other = mysqli_fetch_assoc(mysqli_query($link, «SELECT * FROM `peoples` WHERE `id` = ‘».$id.«‘ LIMIT 1»));
  3. return $other[‘login’];
  4. //$link = это подключение к базе данных. Почему в функции эта переменная не видна? Эта переменная определена вроде в том же файле, где функция распологается
  5. }
 

alexphp

А какую ошибку выдаёт?
Можно предположить, что PHP не видит переменную $link внутри функции, так как она глобальная. PHP так устроен, что в функциях он видит только локальные переменные. А чтобы увидел глобальную, нужно внутри функции дать ему знать, что переменная глобальная с ключевым словом global. Например:

PHP:
  1. <?php
  2.  
  3. $link = 200;
  4.  
  5. function get_people($id)
  6. {
  7.     $other = 100 + $id;
  8.     return ($link + $other); // line 8
  9. }
  10.  
  11. function get_people2($id)
  12. {
  13.     global $link;
  14.    
  15.     $other = 100 + $id;
  16.     return ($link + $other);
  17. }
  18.  
  19. echo get_people(5).«</br>»;
  20. echo get_people2(5).«</br>»;
  21.  
  22. /*
  23. Вывод:
  24. Notice: Undefined variable: link on line 8
  25. 105
  26. 305
  27. */
 

ADSoft

либо передавать в функцию переменную как параметр
либо использовать ООП и методы, свойства объекта итд итп

 

Пэлт

понял. спасибо за помощь!

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *