Проблем с връзката с базата данни Mysqli

В момента използвам mysqli, за да създам връзка към моята база данни. Моят хост сървър не поддържа PDO връзки, затова използвам mysqli. Когато правя връзка, получавам тази грешка:

Fatal error: Call to undefined method mysqli_result::fetchAll()

fetchAll() не е ли част от mysqli?

PHP Свържете се с DB

$mysqli = new mysqli('localhost', 'user', 'password', 'database');

if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
else {
echo ('Success... '); 
}

    $sql = "SELECT * 
            FROM `categories`
            WHERE `master` = 0";
    $statement = $mysqli->query($sql);
    $list = $statement->fetchAll();

person CodingWonders90    schedule 21.07.2012    source източник


Отговори (4)


Когато извикате $mysqli->query($sql), това може да върне обект mysqli_result или стойността false в случай на грешка. Мисля, че вашата заявка не е успешна и връща стойността false и, разбира се, ако поискате false->fetchAll(), това ще даде съобщение за грешка.

Така че първо трябва да проверите дали заявката е била успешна (използвайте оператора === и проверете за false), а след това можете да работите с резултата от заявката.

P.S. Ето защо аз никога не пиша сам функции със смесени въведени връщани стойности...

person martinstoeckli    schedule 21.07.2012

Не: това е fetch_all(), не fetchAll().

person Waleed Khan    schedule 21.07.2012
comment
Добре, благодаря, но сега получавам тази грешка: Call to undefined method mysqli_result::fetch_all() - person CodingWonders90; 21.07.2012

Вероятно искате fetch_all(), вместо fetchAll().

mysqli_result::fetch_all();
PDO::fetchAll();

Ръчно въвеждане

person Madara's Ghost    schedule 21.07.2012
comment
Добре, благодаря, но сега получавам тази грешка: Call to undefined method mysqli_result::fetch_all() - person CodingWonders90; 21.07.2012

Според документацията той е достъпен само с mysqlnd Въпреки това първият коментар на страницата mysql fetch all описва как можете да създадете функция, която прави същото.

http://php.net/manual/en/mysqli-result.fetch-all.php

Освен това е fetch_all, а не fetchAll

person Jon Taylor    schedule 21.07.2012