mysqli / mysql запрос внутри функции не работает

Я пытаюсь создать некоторые функции для моего сайта, и некоторые из них состоят в получении данных из базы данных mysql. Когда я тестирую код вне функции, он работает правильно. Итак, вот она, Первая страница:

require('db.php'); require('functions.php'); $email = 'sample@gmail.com'; if (user_exists($email) == true){ echo "Good news, this exists"; } 

Теперь db.php:

 $db = new MySQLi("localhost","test","test","test"); if ($db->connect_errno){ echo "$db->connect_errno"; } 

И файл functions.php:

 function sanitize ($data){ $db->mysqli_real_escape_string($data); } function user_exists($usermail){ $usermail = sanitize($usermail); $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); $check = $query->num_rows; return ($check == 1) ? true : false; } 

И ошибка, которую я получаю при доступе к первому файлу:

 Notice: Undefined variable: db in C:\xampp\htdocs\auctior\inc\functions.php on line 6 Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\auctior\inc\functions.php on line 6 

Так что я / потребовал / включил db.php, где $ db – это соединение mysqli. И в том же файле (первый файл) я вызываю функции, находящиеся в functions.php

Заранее спасибо, я буду благодарен за вашу помощь, потому что это меня раздражает ……

Вероятно, вам нужно использовать ключевое слово global , иначе $db считается var в локальной области.

 function sanitize ($data){ global $db; $db->mysqli_real_escape_string($data); } function user_exists($usermail){ global $db; $usermail = sanitize($usermail); $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); $check = $query->num_rows; return ($check == 1) ? true : false; } 

Попробуйте подключиться внутри функции, и подключение должно быть включено до включения функций.

Что-то вроде этого:

 function user_exists($usermail){ $db = new MySQLi("localhost","test","test","test"); $usermail = sanitize($usermail); $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); $check = $query->num_rows; return ($check == 1) ? true : false; }