- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
function get_avatar($id){
$mysqli = connectDB();
$avatar_get = $mysqli->query("SELECT `avatar` FROM `users` WHERE `id`='$id'");
$line = $result_set->fetch_assoc();
closeDB($mysqli);
return $line["avatar"];
}
P.S. А коннект на каждый запрос - это няшно. Я такого чуда еще ни разу не видел ;)
2. Кто такой $result_set? Кто его породил?
Проверить корректность запроса — не проблема, всего-то ввести его в консоль СУБД руками и посмотреть, что он возвращает.
На ошибку здесь явно указал guest: объект запроса сохраняется в переменной $avatar_get, а метод для выполнения запроса дёргается у переменной $result_set, которая наверняка ещё не инициализирована.
Кстати, новички в пхп часто спотыкаются на том, что запрос выполняется не в одну строку.
Но самое интересное, откуда приходит значение $id. Если оно выше по коду приходит из параметров запроса ($_GET, $_POST) и не фильтруется, то будет очень плохо...
в качестве $id что, нельзя передать "Роберт'); DROP TABLE Students;--"?
Нельзя. mysqli::query() исполняет только один запрос. См. ниже идею багфикса.
Что удивительно, даже школьные поделки перешли на mysqli, а вот подготовленных выражений как не было, так и нет.
select * from $table where id=$id; где $table и $id брались из урла. Урлы были вида /pages/192 pages это таблица 192 id.
$table обрабатывалось mysql_real_escape_string и автор был уверен что инъекция не пройдет.
Набирали себе сотрудников?
ты можешь только забиндить значения к параметрам, которые уйдут в СУБД как отдельные значения
или я не понял, о каком примере ты говоришь
А если сайт отдает левым юзерам записи, которые он им не должен бы отдавать - это уже у автора опилки в голове. От этой уязвимости СУБД и ее интерфейсы не застрахуют, разве что завести по юзеру в базе на каждого юзера на сайте...
... и сделать каждому из них свои вьюхи.
Ну либо особый ORM, умеющий в права на записи. Есть такие?
В любом случае, больно уж жутко получается ради подстраховки пыхомакаки от фейла...
Дай дураку половой орган стеклянный, он осколками и порежется.
Это почему же? Несколько колонок можно слепить через CONCAT. Судя по коду тут будет выводиться всего одна строка - можно слепить табличку через GROUP_CONCAT.
Можно эх печалька
Можно. А на самом деле даже нужно.