@dadduUrsa
Вернувшийся кодер недоучка

Почему при запросе SQL через тело функции PHP получаю ошибку соединения?

Мучаюсь с такой проблемой: Мне нужно чтобы при клике по radio получить значение этого radio и передать его в SQL запрос. В JS я получаю значение.

$("input[name='select_account']").on('click', function () {
    var x = $("input[name='select_account']:checked").val();
})


Потом как я понимаю его надо передать в PHP и сделать запрос через SQL. Соответственно я делаю функцию, которая передают это значение, однако при получении запроса я получаю ошибку (Query failed). Однако если я запущу код запроса вне тела функции, то никакой ошибки не возникает.

function sql_query($user_id) {
    $query = 'select * from users WHERE id='.$user_id.';';
    $query_result = mysqli_query($connection, $query);
        if(!$query_result) {
            die('Query failed'.mysqli_error());
        } else {
            echo ('Complete');
        }
        return $query_result;
}


$connection я получаю ранее в коде без ошибок.

И вообще может я зря мучаюсь с этой функцией, может есть более простое решение?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Главная проблема пхп в том, что во всех онлайн учебниках написан ужас из прошлого века. И самое печальное что пользователи тиа AUser0 его бездумно повторяют.

Вот как будет правильно:
function get_user($connection, $user_id) {
    $stmt = $connection->prepare('select * from users WHERE id=?');
    $stmt->bind_param("s", $user_id); 
    $stmt->execute();
    return $stmt->get_result()->fetch_assoc();
}
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Про область видимости переменных уже подсказали, внимательно изучайте.
А что-бы было на чём осознать написанное в документации, вот ваш код (с простейшей защитой от SQL-иньекций, тоже стоит изучить):
function sql_query($user_id) {
    global $connection;
    $query = "SELECT * FROM users WHERE id='".mysqli_real_escape_string($connection, $user_id)."'";
    if(!$query_result = mysqli_query($connection, $query)) {
            die('Query failed: '.mysqli_error($connection));
    } else {
            echo ('Complete');
    }
    return $query_result;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы