Я пытаюсь создать некоторые функции для моего сайта, и некоторые из них состоят в получении данных из базы данных 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; }