За последние 24 часа нас посетили 20586 программистов и 1133 робота. Сейчас ищет 631 программист ...

MySQL > MySQLi

Тема в разделе "PHP для новичков", создана пользователем Kela, 3 мар 2018.

Метки:
  1. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    Добрый день. Прошу помощи. Работа много с MySQL, сейчас все перешли на высокие версии PHP 5.6+
    Где mysql не работает!
    Можете привести пример данного кода в mysqli?
    PHP:
    1. $sql = "SELECT name FROM $db_table WHERE type != '2' AND `name` = '$username'";
    2. $sql = mysql_query($sql);
    3.     $sql = mysql_query("SELECT admin FROM $db_table WHERE name='$username'");
    4.     $adm_ban = mysql_result($sql,0);
    5.     $sql = mysql_query("SELECT reason FROM $db_table WHERE name='$username'");
    6.     $res_ban = mysql_result($sql,0);
    7.     $sql = mysql_query("SELECT temptime FROM $db_table WHERE name='$username'");
    8.     $time_ban = mysql_result($sql,0);
    9.     $sql = mysql_query("SELECT time FROM $db_table WHERE name='$username'");
    10.     $time_banned = mysql_result($sql,0);
    Cпасибо!
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Есть полные аналоги большинства этих ф-ций. Лучше бы учились нормально работать с БД, а то будет такая же кривизна, хоть и с использованием нов. ф-ций.
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  4. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    Использую пример https://php.ru/manual/mysqli.query.html
    Все равно не работает!
    Вот что получается.
    PHP:
    1. $sql = "SELECT name FROM $db_table WHERE type != '2' AND `name` = 'Kela'";
    2. $sql = mysqli_query($link, $sql);
    3.     $sql = mysqli_query($link, "SELECT admin FROM $db_table WHERE name='Kela'");
    4.     $adm_ban = printf(mysqli_num_rows($sql,0));
    5.     $sql = mysqli_query($link, "SELECT reason FROM $db_table WHERE name='Kela'");
    6.     $res_ban = printf(mysqli_num_rows($sql,0));
    7.     $sql = mysqli_query($link, "SELECT temptime FROM $db_table WHERE name='Kela'");
    8.     $time_ban = printf(mysqli_num_rows($sql,0));
    9.     $sql = mysqli_query($link, "SELECT time FROM $db_table WHERE name='Kela'");
    10.     $time_banned = printf(mysqli_num_rows($sql,0));
    Попытка 2
    PHP:
    1. $sql = "SELECT name FROM $db_table WHERE type != '2' AND `name` = 'Kela'";
    2. $sql = mysqli_query($link, $sql);
    3.     $sql = mysqli_query($link, "SELECT admin FROM $db_table WHERE name='Kela'");
    4.     $adm_ban = mysqli_free_result($sql,0);
    5.     $sql = mysqli_query($link, "SELECT reason FROM $db_table WHERE name='Kela'");
    6.     $res_ban = mysqli_free_result($sql,0);
    7.     $sql = mysqli_query($link, "SELECT temptime FROM $db_table WHERE name='Kela'");
    8.     $time_ban = mysqli_free_result($sql,0);
    9.     $sql = mysqli_query($link, "SELECT time FROM $db_table WHERE name='Kela'");
    10.     $time_banned = mysqli_free_result($sql,0);
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    var_dump() в помощь.
    $link точно возвращает соединение?
    P.S Только заметил. Зачем тебе десятки запросов к БД? Ужас.
    Код (Text):
    1. select * from table where name="Kela"
    2. $row=mysqli_fetch_array($result,MYSQLI_ASSOC);
    3. printf ("%s (%s)\n",$row["admin"],$row["time"]);
     
    #5 nospiou, 3 мар 2018
    Последнее редактирование: 3 мар 2018
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    @Kela, т.е. решили взять нас измором?
    PHP:
    1. $sql = "SELECT `name`,`admin`,`reason`,`temptime`,`time` FROM `$db_table` WHERE type != '2' AND `name` = '$username'";
    2.  
    3. if ($result = mysqli_query($link, $sql)) {
    4.   if($row = mysql_fetch_assoc($result)) {
    5.     echo 'Done';
    6.   } else echo 'No such row';
    7.   mysqli_free_result($result);
    8. } else echo 'An error occurs';
    Это получение записи в ассоциативном массиве. Если нужно распаковать в отдельные переменные, то есть несколько способов это сделать. При необходимости освобождать $result можно и до if ($row):
    PHP:
    1.   $row = mysql_fetch_assoc($result);
    2.   mysqli_free_result($result);
    3.   if($row) {
    --- Добавлено ---
    ...это если в результирующей выборке не более одной записи.
     
    #6 miketomlin, 3 мар 2018
    Последнее редактирование: 3 мар 2018
  7. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    Везде NULL выводит.
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Код соединения где?
     
  9. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    Fatal error: Uncaught Error: Call to undefined function mysql_fetch_assoc() in /home/u329089/html/engine/modules/banlist/index.php:95 Stack trace: #0
    --- Добавлено ---
    В самом вверху!
    $link = mysqli_connect("localhost", "3", "3", "3") or die("1.");
     
  10. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Соединения проверил? LastName Age заменил?
    --- Добавлено ---
    mysql_fetch_assoc()? Тут люди хитрые никто точного примера не приведет я тоже where type != 2 не дописывал
     
  11. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    Я как "Великий специалист PHP" новичок не могу понять куда этот код вставить, или вместо чего? Пример можете сделать с мои кодом. Что бы я понял.
    Спасибо
     
  12. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. $sql = "SELECT `name`,`admin`,`reason`,`temptime`,`time` FROM `$db_table` WHERE type != '2' AND `name` = '$username'";
    2. $sql=mysqli_query($link,$sql);
    3. $row=mysqli_fetch_array($sql,MYSQLI_ASSOC);
    4. $adm_ban=$row['admin']
    Угадай чему равен $res_ban?
     
    #12 nospiou, 3 мар 2018
    Последнее редактирование: 3 мар 2018
  13. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    так?
    PHP:
    1. $sql = "SELECT name FROM $db_table WHERE type != '2' AND `name` = 'Kela'";
    2. $sql = mysqli_query($link, $sql);
    3.     $result = mysqli_query($link, "SELECT * FROM $db_table WHERE name='Kela'");
    4.     $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
    5.     $adm_ban = printf ("%s (%s)\n",$row["admin"],$row["time"]);
     
  14. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. $link=mysqli_connect("localhost","my_user","my_password","my_db");
    2. $db_table = 'table_name'; // your table_name
    3. $username = 'Kela'
    4. if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error();
    5. $sql = "SELECT `name`,`admin`,`reason`,`temptime`,`time` FROM `$db_table` WHERE type != '2' AND `name` = '$username'";
    6. $sql=mysqli_query($link,$sql);
    7. $rows=mysqli_fetch_array($sql,MYSQLI_ASSOC);
    8. // но лучше limit 1
    9. foreach($rows as $row) {
    10.     $adm_ban=$row['admin'];
    11.     $xxx_ban=$row['reason'];
    12.     $xxx_ban=$row['temptime'];
    13.     $xxx_ban=$row['time'];
    14. }
    15. mysqli_close($link);
     
    #14 nospiou, 3 мар 2018
    Последнее редактирование: 3 мар 2018
  15. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    PHP:
    1. $sql = "SELECT `name`,`admin`,`reason`,`temptime`,`time` FROM `$db_table` WHERE type != '2' AND `name` = 'Kela'";
    2. $sql = mysqli_query($link, $sql);
    3.     $row = mysqli_fetch_array($sql,MYSQLI_ASSOC);
    4.     $adm_ban = $row['admin']
    Заблокировал:

    NULL
    --- Добавлено ---
    PHP:
    1. $sql = "SELECT `name`,`admin`,`reason`,`temptime`,`time` FROM `$db_table` WHERE type != '2' AND `name` = 'Kela'";
    2. $sql = mysqli_query($link, $sql);
    3. $row=mysqli_fetch_array($sql,MYSQLI_ASSOC);
    4.     $adm_ban = $row['admin'];
    5.     $res_ban = $row['reason'];
    6.     $time_ban = $row['temptime'];
    7.     $time_banned = $row['time'];
    NULL
    --- Добавлено ---
    Этот вариант тоже не работает..
    PHP:
    1. $sql = "SELECT `name`,`admin`,`reason`,`temptime`,`time` FROM `$db_table` WHERE type != '2' AND `name` = 'Kela'";
    2. $sql=mysqli_query($link,$sql);
    3. $rows=mysqli_fetch_array($sql,MYSQLI_ASSOC);
    4. foreach($rows as $row) {
    5.     $adm_ban = $row['admin'];
    6.     $res_ban = $row['reason'];
    7.     $time_ban = $row['temptime'];
    8.     $time_banned = $row['time'];
    9. }
    --- Добавлено ---
    И этот тоже не работает!
    PHP:
    1. $username = 'Kela';
    2. $sql = "SELECT `name`,`admin`,`reason`,`temptime`,`time` FROM `$db_table` WHERE type != '2' AND `name` = '$username'";
    3. $sql=mysqli_query($link,$sql);
    4. $rows=mysqli_fetch_array($sql,MYSQLI_ASSOC);
    5. foreach($rows as $row) {
    6.     $adm_ban = $row['admin'];
    7.     $res_ban = $row['reason'];
    8.     $time_ban = $row['temptime'];
    9.     $time_banned = $row['time'];
    10. }
     
  16. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ну ты хоть ошибки пиши. var_dump($rows) хоть что возвращает?
     
  17. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    NULL
     
  18. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. if(mysqli_connect_errno())echo"Failed to connect to MySQL: ".mysqli_connect_error();
    и эта строка ошибку не выдает?
     
  19. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Ну Ё! Я скопипастил код ТСа, поправил на коленке. ЧЁ трудно понять, в чем тут ошибка что ли?
    --- Добавлено ---
    У вас точно БД называется 3 или вы решили нас по полной потроллить?
     
  20. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    нет.
    кек. нет. это я просто изменил когда пароль менял.
     
  21. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    где твой рес бан?
     
  22. Kela

    Kela Активный пользователь

    С нами с:
    20 дек 2014
    Сообщения:
    84
    Симпатии:
    1
    не понял
     
  23. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    @Kela ты nospiou ?
    --- Добавлено ---
    @Kela в лс скинь весь проект, ночью поковыряюсь мб
     
  24. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Да он явно сотрудник сбербанка. Лови удачу пробуй пароль 3.
     
  25. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    @Kela включи отображения всех ошибок, я тут слезами пробираюсь через код

    почему синтаксис все еще не выучен ?
    PHP:
    1. if ( $usergroup == '1' || '2' )
    2. {
    3.     print ...;
    4. }
    5. else {};
    6.  
    7. /* ... */
    8.  
    перекодил БД, проект не смог запустить, файлы не все были запакованы.
    В лс выслал
    --- Добавлено ---
    переменная $username вообще не существует поэтому вся тема в трабле