Почему не работает функция?

Код прекрасно работает "вне функции".
$select_result=mysql_query("SELECT `api_key` FROM `users` WHERE `id`='$all_about_user_array[id]' LIMIT 1");
$row=mysql_fetch_assoc($select_result);
$api_key=$row['api_key'];
echo"$api_key";


Но оформленный в виде функции - нет.
function user_api_key()
{
$select_result=mysql_query("SELECT `api_key` FROM `users` WHERE `id`='$all_about_user_array[id]' LIMIT 1");
$row=mysql_fetch_assoc($select_result);
$api_key=$row['api_key'];
return $api_key;
}
echo user_api_key();


Почему не работает функция?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
$all_about_user_array[id]
потерялся

а вообще ваш код работает далеко не прекрасно.
на дворе 2018 год.
функции mysql_* устарели начиная с версии 5.5 (а ей уже больше 4х лет)
и что за id? константа?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
riot26
@riot26
<:З )~~
$all_about_user_array['id'] откуда в функции взяться? Нужно передавать
function user_api_key($user_id)
{
    $select_result=mysql_query("SELECT `api_key` FROM `users` WHERE `id`='$user_id' LIMIT 1");
    $row=mysql_fetch_assoc($select_result);
    $api_key=$row['api_key'];
    return $api_key;
}
echo user_api_key($all_about_user_array['id']);

P.S. Mysql-расширение для работы с БД устарело и использовать его нельзя. Подробнее в красной плашке здесь
Ответ написан
@karminski
Senior PHP /React.js developer
Поясните, пожалуйста, что именно не работает. Не выводит на экран api_key?
Вместо echo сделайте так
var_dump(user_api_key());
Что дал вывод?
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1. учимся дебажить.
если что-то не работает, нужно по шагам проверить все.
что передается в каждую функцию.
что возвращается из каждой функции.

2. перестаем использовать mysql_, переходим на mysqli_ / pdo

3. обновляем версию PHP до актуальной

PS
ответ на вопрос - потому что внутри функции не определен $all_about_user_array['id'].
его нужно туда передать агргументом

PPS
Вместо
mysql_query("SELECT `api_key` FROM `users` WHERE `id`='$all_about_user_array[id]' LIMIT 1");

пишите хотя бы
mysql_query('SELECT `api_key` FROM `users` WHERE `id` = ' . (int)$all_about_user_array[id] . ' LIMIT 1');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы