mysqli Соединение с include (конструкция)

0

Я хочу соединить мой код с файлом конфигурации:

class User {
include('../config/config.php');
global $db;


function checkUser($userData = array()){
    if(!empty($userData)){
        $prevResult = mysqli_query($db,  "SELECT * FROM usersa WHERE oauth_provider = '".$userData['oauth_provider']."' AND oauth_uid = '".$userData['oauth_uid']."'");
        if(mysqli_num_rows($prevResult) > 0){
            $update = mysqli_query($db,  "UPDATE usersa SET first_name = '".$userData['first_name']."', last_name = '".$userData['last_name']."', email = '".$userData['email']."', gender = '".$userData['gender']."', locale = '".$userData['locale']."', picture = '".$userData['picture']."', link = '".$userData['link']."', modified = '".date("Y-m-d H:i:s")."' WHERE oauth_provider = '".$userData['oauth_provider']."' AND oauth_uid = '".$userData['oauth_uid']."'");
        }else{
            //Insert user data
            $insert = mysqli_query($db,  "INSERT INTO usersa SET oauth_provider = '".$userData['oauth_provider']."', oauth_uid = '".$userData['oauth_uid']."', first_name = '".$userData['first_name']."', last_name = '".$userData['last_name']."', email = '".$userData['email']."', gender = '".$userData['gender']."', locale = '".$userData['locale']."', picture = '".$userData['picture']."', link = '".$userData['link']."', created = '".date("Y-m-d H:i:s")."', modified = '".date("Y-m-d H:i:s")."'");
        }

        $userData = mysqli_fetch_assoc(mysqli_query($db, $prevResult));
    }
    return $userData;
}
}

Мой файл конфигурации:

$MySQLhostname = "localhost"; // Server
$MySQLusername = "cu-"; // Username
$MySQLpassword = "&6"; // Passwort
$MySQLdb = "cu-"; // Datenbank

$db = mysqli_connect("$MySQLhostname", "$MySQLusername", "$MySQLpassword",    "$MySQLdb") or die(mysqli_error());

Страница не открывается. Изменились и попробовали все, но это не будет продолжаться:/Надеюсь, вы можете помочь мне :)

  • 0
    И include и global $db будут работать только в конструкторе или до определения класса.
  • 0
    ВНИМАНИЕ : при использовании mysqli вы должны использовать параметризованные запросы и bind_param для добавления любых данных в ваш запрос. НЕ используйте интерполяцию или конкатенацию строк для достижения этой цели, поскольку вы создали серьезную ошибку внедрения SQL . НИКОГДА не помещайте $_POST , $_GET или данные любого вида непосредственно в запрос, это может быть очень вредно, если кто-то попытается использовать вашу ошибку.
Теги:
database
mysqli

1 ответ

1

Ваша директива include находится внутри определения class User. Это означает, что код

$db = mysqli_connect("$MySQLhostname", "$MySQLusername", "$MySQLpassword",    "$MySQLdb") or die(mysqli_error());

никогда не будет казнен.

Переместите include перед определением class User, удалите строку mysqli_connect из файла конфигурации и вызовите ее внутри конструктора класса.

Как в

include('../config/config.php');

class User {

public functions __construct() {
  global $db;
  $db = mysqli_connect("$MySQLhostname", "$MySQLusername", "$MySQLpassword",    "$MySQLdb") or die(mysqli_error());
}

// etc...
  • 0
    Но я хочу вызвать его из другого файла?
  • 0
    Попробовал ваш код с конструкцией, но он не работает.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню