За последние 24 часа нас посетили 22622 программиста и 1016 роботов. Сейчас ищут 725 программистов ...

Ошибка в коротком коде

Тема в разделе "Сделайте за меня", создана пользователем ilya45, 28 янв 2023.

  1. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    Я пытаюсь получить количество строк в которых есть определенный текст,и хочу сделать это используя подготовленные запросы.Но в моем коде что то не то
    PHP:
    1. $get_user_count_of_username="SELECT * FROM `users` WHERE `username`=':un'";
    2.     $get_user_count = $connect->prepare($get_user_count_of_username);
    3.     $get_user_count->execute(['un'=>$username]);
     
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    858
    Симпатии:
    132
    Ты научишься ман читать PHP: PDOStatement::execute - Manual или дальше будешь форум бессмысленными темами покрывать?
     
  3. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    Так смысл вообще форума если есть документации и все можно посмотреть и учиться там.
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    ilya45 нравится это.
  5. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    858
    Симпатии:
    132
    Смысл форума чуть-чуть в другом, а когда что-то не работает, нужно включать отладку и курить ман в первую очередь, и только потом задавать вопрос. Сам зашёл в PHP 3 ещё, тогда и рунета не было толком, про тематические ресурсы молчу.
     
  6. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    Ок,на данный момент я не могу научиться кидать эти чертовы подготовленные запросы или как их еще параметризованные запросы.
    Я смотрел ман
    вот код
    PHP:
    1. $sql = "SELECT * FROM `users` WHERE `username`=\"ivan\";";
    Он ведь уязвим для sql инъекций?
    Там везде тока про insert вот insert с подготовленными запросами я умею а вот получить список пользователей с определенным именем не смог так и научиться и толком нет мана именно на это либо есть и я не заметил
     
  7. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    858
    Симпатии:
    132
    @ilya45, код выше не уязвим, ибо не принимает никаких параметров.
    Тебе нужно что-то такое:
    PHP:
    1. $sql = "SELECT * FROM `users` WHERE `username` = :username";
    2. $stmt = $pdo->prepare($sql);
    3. $stmt->execute(['username' => $username]);
    4. $rows = $stmt->fetchAll();
    Рекомендую прокомментировать каждую строку, чтобы понять, что происходит.
     
  8. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    Сори там должно было быть вот так
    PHP:
    1. $sql = "SELECT * FROM `users` WHERE `username`=\$username\";";
    И когда я принимаю список имен,система не может конвертировать,что тока я не пробовал например
    PHP:
    1. $get_usernames_as_username=mysqli_fetch_assoc($get_usernames_as_username);
    иде шка ругается мол ошибка
     
  9. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    858
    Симпатии:
    132
    не весь код привёл, из одной строки следует, что $get_usernames_as_username не определена
    IDE может на много что ругаться, работает ли скрипт, то важно.
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Во-первых, надо уточнить какое расширение используется — PDO или mysqli. Я вижу здесь разночтение, ТС может попытаться по подсказке применить неприменимое.

    И действительно, в официальной документации есть масса примеров. В первую очередь надо ходить туда, а не перекладывать задачу на других ))) Только надо правильно понять контекст.
    --- Добавлено ---
    покажи сообщение об ошибке. я догадываюсь что не то, но сделай так, чтобы мы не гадали, а знали точно. в сообщении обычно есть вся информация.
    --- Добавлено ---
    https://phpfaq.ru/debug
     
    ilya45 нравится это.
  11. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    Я просто не смог правильно кинуть запрос на получение строк,но уже исправил спасибо. Как удалить тему? или у вас так не принято
    --- Добавлено ---
    как раз по сообщении и смог
    --- Добавлено ---
    кстати у вас при выборе текста и нажатии на "Цитировать" эта функция не работает,или у меня траблы с браузером
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Удалять у нас не принято. Принято писать в чем была проблема чтобы кто-то смог это найти и воспрользоваться.

    "Quote" накапливает фрагменты текста в буфере. Чтобы вставить, перейди к полю ввода коментария и найди кнопку "Insert Quotes"
     
  13. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    Да,я всегда так делаю на всех форумах,если решил задачу пишу,что бы вдруг если другие столкнутся или в будущем новички столкнутся смогу справится
    --- Добавлено ---
    вот мой код который работает на ура
    PHP:
    1. $get_un = $connect->prepare("SELECT * FROM users WHERE username = :uname");
    2.     $get_un->execute([':uname' => $username]);
    3.     if ($get_un->rowCount() > 0) {
    4.         $_SESSION['message'] = 'Bu kullanıcı adı sistemde kayıtlı';
    5.         header('Location: ../register.php'); // Возврат на форму регистрации
    6.         die; // Остановка выполнения скрипта
     
    artoodetoo нравится это.
  14. hellscoder

    hellscoder Гость

    С нами с:
    28 янв 2024
    Сообщения:
    4
    Симпатии:
    0
    Код (Text):
    1. $get_user_count_of_username = "SELECT * FROM `users` WHERE `username` = :un";
    2. $get_user_count = $connect->prepare($get_user_count_of_username);
    3. $get_user_count->execute(['un' => $username]);