Arthur'); DROP TABLE Users;--
Arthur'); DROP TABLE Users;--
а я то думал
Arthur'); DROP TABLE Users;--
серьёзно, знает кто?
Виталий
серьёзно, пыха так не умеет
Алексей
вот щас серьезно..... все переменные в пыхе после доллара идут
Виталий
вот щас серьезно..... все переменные в пыхе после доллара идут
Он хочет динамически получить название переменной...
Алексей
эм.... $$var
Алексей
название или ее значение?
Юрий
что имеется в виду?
Алексей
get_defined_vars
Алексей
Вот я щас тоже пальцем в небо тыкаю, ибо нихрена не понятно что человек хочет
Виталий
Не, как я понял, чел хочет динамически узнать, как именована переменная, аля $foo = 'bar'; и вот из этой переменной получить foo
Виталий
Но вообще дичь какая-то
Алексей
Я думаю его решение есть где то на сайте http://govnokod.ru/php
Arthur'); DROP TABLE Users;--
это в Voyager пакете есть но я потерял где это
Arthur'); DROP TABLE Users;--
там динамически создаваемые модели
Arthur'); DROP TABLE Users;--
их миграции и т.д. поэтому используется имя переменной
Gabit
function print_var_name($var) { foreach($GLOBALS as $var_name => $value) { if ($value === $var) { return $var_name; } } return false; }
Виталий
function print_var_name($var) { foreach($GLOBALS as $var_name => $value) { if ($value === $var) { return $var_name; } } return false; }
ну такое... Если у тебя много переменных с одним и тем же значением (например false), выкинет первое попавшееся, а не то, которое ты передал.
Anonymous
Добрый день ребята! Подскажите что не так делаю if(checkUser($id)){ echo $user; } --- function checkUser($id){ global $mysqli; $query = $mysqli->query("select * from `users` where `id` = $id"); if($query->num_rows) return $user = $query->fetch_object(); else return false; } ---
Anonymous
Проверяю есть ли пользователь в базе
Anonymous
Если есть нужно вернуть модель пользователя
Виталий
Ой ой.. Тут все очень плохо
Виталий
Во первых глобальная переменная mysqli. Не надо так.
Anonymous
А что если я сначала буду делать checkUser();
Anonymous
А потом что то типа getUser();
Anonymous
А как надо подскажите Виталий?
Vladimir
Парень, сотри свой код, и читай что такое модели и Eloquent
Виталий
Во вторых у тебя checkUser возвращает модель, но ты её не присваиваешь никакой переменной
Anonymous
Если $mysqli не объявить как глобавльную то она будет доступна внутри функции
Юрий
Сексист)
Vladimir
Ой
Vladimir
Сорри)
Виталий
Вернее присваиваешь $user но в локальной области видимости функции
Виталий
Тут на самом деле все очень плохо
Виталий
Для начала советую подучить php в целом
Anonymous
function checkUser($user_id){ global $mysqli; // поиск пользователя по user_id $query = $mysqli->query("select * from `users` where `user_id` = {$user_id}"); if($query->num_rows){ // если пользователь найден return true; } else{ // если пользователь не найден return false; } } function getUser($user_id){ global $mysqli; $query = $mysqli->query("select * from `users` where `user_id` = {$user_id}"); return $user = $query->fetch_object(); }
Anonymous
Это просто php код
invariance
Так, в чем проблема?
Anonymous
В Laravel $user = App\User::findOrFail($id);
invariance
но это ж просто php код) Я имею ввиду, вы на фреймворке делаете что-то или без
Anonymous
Проверяю есть ли пользователь в базе. Потом нужно получить либо пользователя с данными либо false
Anonymous
Без фреймворка
Anonymous
Головый php + mysqli
Anonymous
Даже PDO не могу использовать
invariance
а laravel тут причем? :D
Anonymous
Задание на mysqli
invariance
В Laravel $user = App\User::findOrFail($id);
вот это как связано
Anonymous
Если знаешь Laravel значит знаешь PHP
invariance
о_О
Anonymous
Тут ребята более адекватные нежели в phpgeeks
Anonymous
Там спросишь что нить и начинается
invariance
Anonymous
Так что на счет глобального объявления внутри функции $mysqli
invariance
но их можно просто забанить, если будут неадекватить 👌🏻
Anonymous
Насколько это плохо?
Anonymous
И почему?
Anonymous
Безопасность, подводные камни? Что?
invariance
Так что на счет глобального объявления внутри функции $mysqli
Использовать global переменные - плохая практика
invariance
нарушение принципа инкапсуляции
Anonymous
Но как тогда получить данные внутри функции?
Anonymous
Ну да. Нужно же что то вернуть
invariance
Как это должно работать:
invariance
вы подаете данные в функцию в виде аргументов
invariance
функция обрабатывает их и возвращает результат
invariance
никакие global не нужны
Anonymous
А как сделать запрос к базе?
Anonymous
Если $mysqli является глобавльно?
invariance
$mysqli должен создаваться в области определения функций
invariance
а не внутри функции
invariance
тогда он будет доступен для использования внутри всех функций
Anonymous
Или внутри функции создать новую $mysqli = new mysqli()