За последние 24 часа нас посетили 18772 программиста и 1702 робота. Сейчас ищут 879 программистов ...

Object of class mysqli_result could not be converted to

Тема в разделе "PHP и базы данных", создана пользователем dragondangun, 23 авг 2015.

  1. dragondangun

    dragondangun Новичок

    С нами с:
    23 авг 2015
    Сообщения:
    5
    Симпатии:
    0
    При выполнении следующего кода появляются ошибки:
    Notice: Object of class mysqli_result could not be converted to int on line 10
    и
    Catchable fatal error: Object of class mysqli_result could not be converted to string on line 16
    Что код, по идее, должен выполнять:
    Вывести на страницу некоторое число ссылок (по количеству максимальному id в базе данных, например если Max(id) = 10, то и ссылок соответственно 10), каждая ссылка должна называться title'ом, который соответствует данному id.
    Код (PHP):
    1. <html>
    2. <head>
    3. <meta charset="utf8">
    4. </head>
    5. <?php
    6.  
    7.     include_once 'DB.php';
    8.  
    9. $max = mysqli_query($dblink, "SELECT MAX(id) FROM tmes");
    10. settype($max, "int");
    11. echo gettype($max);
    12. {
    13.     for ($i = 0; $i < $max; $i++ )
    14.     {
    15.         $names = mysqli_query($dblink, "SELECT title FROM tmes WHERE id='$i'");
    16.         settype($names, "string");
    17.         $page_line .= '<a href="?page=' . $i .
    18.                 '">[' . $names  . ']</a>';
    19.     }
    20.  
    21.     // выводим готовую строку навигации
    22.     echo $page_line;
    23. }
    24.  
    25.  
    26. ?>
    27. </html>
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
  3. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    settype($max, "int"); а зачем так делать?
     
  4. dragondangun

    dragondangun Новичок

    С нами с:
    23 авг 2015
    Сообщения:
    5
    Симпатии:
    0
    Пытался сконвертировать в ручную и проверить, просто напрягает фраза " Object of class mysqli_result could not be converted to int".
     
  5. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    почитай документацию как работать с mysqli_result.
    и зачем было конвертировать, что ты ожидал?
     
  6. dragondangun

    dragondangun Новичок

    С нами с:
    23 авг 2015
    Сообщения:
    5
    Симпатии:
    0
    Ожидал, что та ошибка исчезнет.
     
  7. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Notice это предупреждение,что делаешь что-то не так, убери settype() везде
     
  8. dragondangun

    dragondangun Новичок

    С нами с:
    23 авг 2015
    Сообщения:
    5
    Симпатии:
    0
    Ничего не изменилось.
     
  9. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а что ты ожидал?
     
  10. dragondangun

    dragondangun Новичок

    С нами с:
    23 авг 2015
    Сообщения:
    5
    Симпатии:
    0
    Ожидал, что ошибки исчезнут. В общем, я следующим образом изменил код:
    Код (PHP):
    1. <html>
    2. <head>
    3. <meta charset="utf8">
    4. </head>
    5. <?php
    6.  
    7.     include_once 'DB.php';
    8.  
    9. $max1 = mysqli_query($dblink, "SELECT MAX(id) FROM tmes");
    10. $max =  mysqli_fetch_row($max1);
    11.  
    12. {
    13.     for ($i = 0; $i < $max; $i++ )
    14.     {
    15.         $names1 = mysqli_query($dblink, "SELECT title FROM tmes WHERE id='$i'");
    16.         $names =  mysqli_fetch_row($names1);
    17.         $page_line .= '<a href="?page=' . $i .
    18.                 '">[' . $names  . ']</a>';
    19.     }
    20.  
    21.     echo $page_line;
    22. }
    23.  
    24.  
    25. ?>
    26. </html>
    Появились другие ошибки:
    Notice: Undefined variable: page_line in C:\apache\localhost\www\w.php on line 18

    Notice: Array to string conversion in C:\apache\localhost\www\w.php on line 18

    Notice: Array to string conversion in C:\apache\localhost\www\w.php on line 18

    Notice: Array to string conversion in C:\apache\localhost\www\w.php on line 18

    Notice: Array to string conversion in C:\apache\localhost\www\w.php on line 18

    Fatal error: Maximum execution time of 30 seconds exceeded in C:\apache\localhost\www\w.php on line 15
     
  11. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    на строке 18 ты пытаешься сделать конкатенацию без инициализирования переменной page_line

    ты хоть читал документацию по PHP?

    http://phpfaq.ru/debug
    https://secure.php.net/manual/ru/language.types.array.php
    Код (PHP):
    1. <html>
    2. <head>
    3. <meta charset="utf8">
    4. </head>
    5. <pre>
    6. <?php
    7.  
    8.     include_once 'DB.php';
    9.  
    10. $max1 = mysqli_query($dblink, "SELECT MAX(id) FROM tmes");
    11. $max =  mysqli_fetch_row($max1);
    12. var_export($max);
    13.  
    14. {
    15.     for ($i = 0; $i < $max; $i++ )
    16.     {
    17.         $names1 = mysqli_query($dblink, "SELECT title FROM tmes WHERE id='$i'");
    18.         $names =  mysqli_fetch_row($names1);
    19.         var_export($names);
    20.         $page_line .= '<a href="?page=' . $i .
    21.                 '">[' . $names  . ']</a>';
    22.     }
    23.  
    24.     echo $page_line;
    25. }
    26.  
    27.  
    28. ?>
    29. </html>
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    $names это массив. его нельзя просто в строчку вставить. Нужно название поля написать =)