Fetch assoc php ошибка

Почему выскакивает такая ошибка?

Fatal error: Call to a member function fetch_assoc() on a non-object in Z:homeAnastasiyawwwsearch.php on line 22

Хочу сделать поиск по сайту, с помощью БД.
Создала БД «anastasiya» (в которой и буду совершать поиск) с таблицей «content».

Вот код:

    $areaywords = explode(" ", $words);
    print_r($areaywords);
    foreach ($areaywords as $key => $value){
        if (isset($areaywords[$key - 1]))
        $query_search .= ' OR ';
        $query_search .='`title` LIKE "%'.$value.'%" OR `text_article` LIKE "%'.$value.'%"';
    }

    $query = "SELECT * FROM content WHERE $query_search";
    echo $query;
    $mysqli = new mysqli("localhost", "root", "", "anastasiya");
    $result_set = $mysqli->query($query);
    $mysqli -> close();

    $i = 0;
    while ($row = $result_set->fetch_assoc()){
        $results[$i] = $row;
        $i++;
    }
    return $results;

}
if (isset ($_POST['bcearch'])){
    $words = $_POST['words'];
    $results = search($words);
}

Ругается на строку:

while ($row = $result_set->fetch_assoc()){

задан 6 окт 2015 в 12:42

Anastasiya's user avatar

AnastasiyaAnastasiya

1171 золотой знак2 серебряных знака12 бронзовых знаков

7

  1. Проверьте выполняется ли конечный запрос $query(который выводится после строки echo $query;) через консоль базы данных.
  2. Проверьте доступ к бд:

    if ($mysqli->connect_errno) {
    die(‘Ошибка соединения: ‘ . $mysqli->connect_error);
    }else{echo ‘Connect true’;}

  3. выполните var_dump($result_set); что показывает выполнение?

P.S.: зачастую проблема либо в некорректном запросе либо в настройке доступа к бд.

ответ дан 6 окт 2015 в 13:29

Alex's user avatar

AlexAlex

6,4786 золотых знаков23 серебряных знака31 бронзовый знак

10

У метода fetch_assoc() в скобочках ничего быть не должно.

while ($row = $result_set->fetch_assoc()){

ответ дан 6 окт 2015 в 13:03

Andrew Godin's user avatar

Andrew GodinAndrew Godin

5552 серебряных знака15 бронзовых знаков

5

Как уже ответил Dmitriy Simushev, ответ на вопрос написан в Warning. Если перевести, то получится Warning: mysqli_result::fetch_assoc() ожидает только 0 параметров, дан 1. Об mysqli_fetch_assoc можно почитать тут http://php.net/manual/ru/mysqli-result.fetch-assoc.php

Вместо

$i = 0;
    while ($row = $result_set->fetch_assoc($result_set)){
        $results[$i] = $row;
        $i++;
    }

Попробуйте так

while ($row = $result_set->fetch_assoc()) {
        $results[] = array [$row['название_первого_поля'], $row['название_второго_поля'], и т.д.]
    }

И не стесняйтесь пользоваться https://translate.google.com/, а лучше, учите английский.

ответ дан 6 окт 2015 в 13:07

Konstantin's user avatar

KonstantinKonstantin

1471 золотой знак2 серебряных знака13 бронзовых знаков

11

Im trying to display users from the database on the page after login but i keep getting an error message:

Fatal error: Call to undefined function fetch_assoc()

here is the code:

    <?php
session_start(); ?>

<link rel="stylesheet" href="form.css">
<div class="body content">

    <div class="welcome">
        <div class="alert alert-success"><?= $_SESSION['message'] ?></div>
        <img src="<?= $_SESSION['avatar'] ?>"><br />
        Welcome <span class="user"><?= $_SESSION['username'] ?></span>

        <?php
        $mysqli = new mysqli("localhost","user","password","database");
        //Select queries return a resultset
        $sql = "SELECT username, avatar FROM users";
        $result = $mysqli->query($sql); //$result = mysqli_result object
        //var_dump($result);
        ?>

        <div id='registered'>
        <span>All registered users:</span>

        <?php
        //while($row = $result->fetch_assoc()){ //returns associative array of fetched row
         while($row = fetch_assoc($result)){ //returns associative array of fetched row
            //echo '<pre>';
            //print_r($row);
            //echo '</pre>';
            echo "<div class='userlist'><span>$row[username]</span>";
            echo "<img src='$row[avatar]'></div>";
        }
        ?>  
        </div>
    </div>
</div>

asked Apr 24, 2017 at 19:52

WillingLearner's user avatar

WillingLearnerWillingLearner

7,0766 gold badges34 silver badges51 bronze badges

2

This is how you do this, you’re mixing object oriented and procedural:

while($row = $result->fetch_assoc()){ //returns associative array of fetched row
            //echo '<pre>';
            //print_r($row);
            //echo '</pre>';
            echo "<div class='userlist'><span>$row[username]</span>";
            echo "<img src='$row[avatar]'></div>";
        }

answered Apr 24, 2017 at 20:06

clearshot66's user avatar

3

Here is correct script for procedural connection to database:

<?php    
    $con = mysqli_connect("localhost","root","","db1");
    $sql = "SELECT username, avatar FROM users";
    $result = mysqli_query($con,$sql);
    $row = mysqli_fetch_assoc($result);
    echo $row["username"] . " " . $row["avatar"] . "<br>";
    mysqli_close($con);
?>

answered Apr 24, 2017 at 20:40

b2ok's user avatar

b2okb2ok

5486 silver badges13 bronze badges

5

Function fetch_assoc() on a non-object

Одной из самых популярных ошибок, с которой мне и моим ученикам приходится сталкиваться, это «Function fetch_assoc() on a non-object«. Регулярно мне присылают вопросы с этой ошибкой и спрашивают, что делать. Давайте с Вами разберём основные причины возникновения данной ошибки.

В оригинале данная ошибка означает, что мы пытаемся вызвать метод fetch_assoc() у не объекта. Например, она возникнет здесь:

<?php
  $x = false;
  $x->fetch_assoc();
?>

У нас переменная «x» является булевской, поэтому никаких методов у неё нет, о чём и сообщает нам PHP. Но это базовая ошибка, которую вряд ли кто-то допустит. Поэтому чаще всего «Function fetch_assoc() on a non-object» является лишь следствием другой ошибки, на которую PHP не реагирует:

<?php
  $result_set = $mysqli->query("SELECT * FROM WHERE `id`='3'");
  $row = $result_set->fetch_assoc();
?>

У нас возникает всё та же ошибка, но теперь она не очевидна. Данная ошибка нам сообщает, что переменная «result_set» не является объектом. Движемся дальше, а почему она не является объектом, где мы её определили? Поднимаем глаза выше и видим, что в неё мы должны поместить результат выборки. И вот именно в этой строчке и содержится ошибка. Если бы $mysqli был не объектом, или мы бы ошиблись с написанием метода query(), нам бы PHP об этом сразу сообщил.

Следовательно, вся проблема в строковой переменной с запросом. Разумеется, на содержимое строки PHP никак не реагирует, но в этом запросе содержится ошибка. Внимательно к нему приглядевшись, можно заметить, что там не хватает названия таблицы.

Исправив запрос, ошибка «Function fetch_assoc() on a non-object» исчезнет. Как видите, в большинстве случаев данная ошибка возникает именно из-за неправильного запроса.

Цель данной статьи была не только рассказать об этой ошибке, но и показать, что не надо зацикливаться на той строке, где, как показывает PHP, содержится ошибка.

  • Создано 14.01.2013 10:54:00


  • Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

$servername = ‘localhost’;
$username = ‘root’;
$password = »;
$dbname = ‘1’;

$mysqli = new mysqli($servername, $username, $password, $dbname);
$login = $_POST[«login»];
$password = $_POST[«password»];

$nick = $mysqli->query(«SELECT * FROM ‘accounts'»);
$result = $nick->fetch_assoc();
var_dump( $result );
Выдает ошибку: «Fatal error: Uncaught Error: Call to a member function fetch_assoc()»


  • Вопрос задан

    более трёх лет назад

  • 209 просмотров

С тем, что запрос не правильный — » вокруг имени таблицы не на месте. И в итоге у вас вернулся FALSE, а не mysqli_result.

К тому же, лучше использовать PDO.

Пригласить эксперта

query
может вернуть false, у вас нет проверки на это и показ ошибки вот и страдаете, а ошибка скорее всего в том что для название таблиц и полей нужно использовать апострофы (`), а кавычки для текста. У вас же название таблицы в кавычках, т.е. нужно `accounts`

Попробуйте в процедурном стиле для начала


  • Показать ещё
    Загружается…

04 июн. 2023, в 01:35

1500 руб./за проект

04 июн. 2023, в 01:25

40000 руб./за проект

03 июн. 2023, в 23:42

1500 руб./за проект

Минуточку внимания

Fatal error: Uncaught Error: Call to a member function fetch_assoc()

You will get this error, if you call fetch_assoc() on $mysqli::result object whose value is false as shown in the below example

$result is false, thats why we are getting a Fatal Error.

<?php

// Incorrect select statement
$qry="SELECT * names";

// $result value is false
$result = $mysqli->query($qry);

// calling fetch_assoc() on $result which is (boolean) false results in fatal error
while ($row = $result->fetch_assoc()) {
    print_r($row);
}

?>

[FIX] You can fix this by making sure sql statement is syntaically correct and is executed with no errors as shown in the below example.

<?php
$qry="SELECT * FROM names";

// proceed only if a query is executed
if($result = $mysqli->query($qry)){
    while ($row = $result->fetch_assoc()) {
        print_r($row);
    }
}
?>

Still getting the error? Use comments section, I’m happy to help

ALTERNATE TITLES

Error: Call to a member function fetch_assoc() on boolean in

Fatal error: Uncaught Error: Call to a member function fetch_assoc() on

fetch_assoc() not working php mysql

php mysql tutorials

Php tutorials

fetch_assoc() example

fetch all rows php mysql

fetch row by row php mysql

Понравилась статья? Поделить с друзьями:
  • Filezilla ошибка загрузки файла xml
  • Filezilla ошибка загрузки очереди
  • Filezilla ошибка gnu tls
  • Filezilla ошибка 530
  • Filezilla ошибка 451