Я хочу соединить мой код с файлом конфигурации:
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());
Страница не открывается. Изменились и попробовали все, но это не будет продолжаться:/Надеюсь, вы можете помочь мне :)
Ваша директива 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...
include
иglobal $db
будут работать только в конструкторе или до определения класса.mysqli
вы должны использовать параметризованные запросы иbind_param
для добавления любых данных в ваш запрос. НЕ используйте интерполяцию или конкатенацию строк для достижения этой цели, поскольку вы создали серьезную ошибку внедрения SQL . НИКОГДА не помещайте$_POST
,$_GET
или данные любого вида непосредственно в запрос, это может быть очень вредно, если кто-то попытается использовать вашу ошибку.