Fatal error uncaught error call to a member function fetch on boolean in

Добрый день, нужна помощь, при открытии раздела на портале, вылазит пустая страница. Зашёл в логи ошибок, там вот такое добро: Uncaught Error: Call to...

За последние 24 часа нас посетили 11467 программистов и 1168 роботов. Сейчас ищут 307 программистов …

Страница 1 из 2


  1. Anton23_23

    С нами с:
    13 май 2022
    Сообщения:
    9
    Симпатии:
    0

    Добрый день, нужна помощь, при открытии раздела на портале, вылазит пустая страница. Зашёл в логи ошибок, там вот такое добро: Uncaught Error: Call to a member function fetch_assoc() on bool in C:\ProgramData\STU-Soft\www\GARAGE_food_coffee\include\db\mysqlroutines.common.inc:2161nStack trace:n#0
    Вот 2161 строчка кода:

    function db_isReportNotExpire($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
    {
    $ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
    $idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
    db_setTimeZone($cn);
    $query = «SELECT 1 FROM `reportindex`
    WHERE idobject = «.$ido.»
    AND idreport = «.$idr.»
    AND (from_unixtime(ri_expirationdate_tmst) > NOW() or ri_expirationdate_tmst is null)
    AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).»
    LIMIT 1;»;
    $ar = $cn->query($query)->fetch_assoc(); // 2161 строчка кода
    logError($cn, $query);
    return (is_array($ar) && sizeof($ar) > 0);
    }


  2. Anton23_23

    С нами с:
    13 май 2022
    Сообщения:
    9
    Симпатии:
    0

    Я совсем не разбираюсь в этом, поэтому и спросил здесь, чтобы мне прям тыкнули пальцем, что именно нужно изменить)


  3. Sail

    С нами с:
    1 ноя 2016
    Сообщения:
    1.524
    Симпатии:
    345

    возвращает false вместо объекта, у которого есть метод fetch_assoc().
    Посмотрите, какой сформировали запрос в $query


  4. Anton23_23

    С нами с:
    13 май 2022
    Сообщения:
    9
    Симпатии:
    0


  5. MouseZver

    С нами с:
    1 апр 2013
    Сообщения:
    7.562
    Симпатии:
    1.284
    Адрес:
    Лень

    Во фрилансе по наему специалиста, а не тогда, когда работник Кафе пытается выпендриться перед начальством, при этом сам ни*уя не знает куда и зачем лезет. Приходит во форумы и с кислой моськой выкладывает кусок говнокода, указывает на причину и при этом сам палец об палец ничего для решения не сделал. Лови отзыв о себе.


  6. Anton23_23

    С нами с:
    13 май 2022
    Сообщения:
    9
    Симпатии:
    0

    Я просил помощь, а не комментарии о том что я ничего не знаю от рандомного типа. Если не можешь или не хочешь помочь не нужно выписывать, будь добрее чел…


  7. Sail

    С нами с:
    1 ноя 2016
    Сообщения:
    1.524
    Симпатии:
    345

    Преобразуйте часть кода, например, таким образом:

    1.     $ar = $cn->query($query)->fetch_assoc(); // 2161 строчка кода
    2.     exit; // прервать выполнение (Fatal error отлаживаем)

    И ищите там, куда лог пишется


  8. antoniii

    С нами с:
    16 мар 2022
    Сообщения:
    324
    Симпатии:
    64

    Ошибка в строке запроса:

    1. $query = «SELECT 1 FROM `reportindex`
    2. WHERE idobject = «.$ido.«
    3. AND (from_unixtime(ri_expirationdate_tmst) > NOW() or ri_expirationdate_tmst is null)
    4. AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«

    Какая ошибка, зависит от того, что запрашиваем. Ведь я не знаю что ищем.


  9. Anton23_23

    С нами с:
    13 май 2022
    Сообщения:
    9
    Симпатии:
    0

    Спасибо, вечером попробую и отпишу


  10. Anton23_23

    С нами с:
    13 май 2022
    Сообщения:
    9
    Симпатии:
    0


  11. Anton23_23

    С нами с:
    13 май 2022
    Сообщения:
    9
    Симпатии:
    0

    Это индексация отчетов, вот код:

    1. // дата создания отчета ( индексации )
    2. function db_getReportCreationDate($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL){
    3.         $ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
    4.         $idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
    5.         $query = «SELECT DATE_FORMAT(from_unixtime(ri_creationdate_tmst),’%d.%m.%Y %H:%i’) AS ri_creationdate FROM `reportindex` WHERE skbranch = «.$skbranch.» and idobject = «.$ido.» and idreport = «.$idr.» LIMIT 1;»;
    6.         $ar = $cn->query($query)->fetch_assoc();
    7.                 return $ar[‘ri_creationdate’];
    8. function db_getReportIndexBody($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL){
    9.         $ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
    10.         $idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
    11.         $query = «SELECT `body` as body FROM `reportindex` WHERE idobject = «.$ido.» and idreport = «.$idr.» LIMIT 1;»;
    12.         $ar = $cn->query($query)->fetch_assoc();
    13. function db_isReportNotExpire($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
    14.         $ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
    15.         $idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
    16.         $query = «SELECT 1 FROM `reportindex`
    17.                   WHERE idobject = «.$ido.«
    18.                     AND (ri_expirationdate_tmst is not null)
    19.                     AND (from_unixtime(ri_expirationdate_tmst) > NOW() or ri_expirationdate_tmst is null)
    20.                     AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
    21.         $ar = $cn->query($query)->fetch_assoc();
    22. function db_isReportHaveExpireDate($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
    23.         $ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
    24.         $idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
    25.         $query = «SELECT 1 FROM `reportindex`
    26.                   WHERE idobject = «.$ido.«
    27.                     AND (ri_expirationdate_tmst is not null)
    28.                     AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
    29.         $ar = $cn->query($query)->fetch_assoc();
    30. function db_ReportResetExpireDate($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
    31.         $ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
    32.         $idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
    33.         $query = ‘SET @@session.time_zone = «+00:00»;’;
    34.         $result = $cn->query($query);
    35.         $query = «UPDATE `reportindex`
    36.                     SET ri_expirationdate_tmst = UNIX_TIMESTAMP(NOW())
    37.                   WHERE  idobject = «.$ido.«
    38.                     AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«;»;
    39.         $result = $cn->query($query);
    40. function db_getReportIDLanguage($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
    41.         $ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
    42.         $idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
    43.         $query = «SELECT `idlanguage` FROM `objectsreports`
    44.                   WHERE  idobject = «.$ido.«
    45.                     AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«;»;
    46.         $ar = db_runQueryAndReturnArray($cn, $query);
    47.                 return $ar[0][‘idlanguage’];
    48. function db_isObjectsReportsExits($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
    49.         $ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
    50.         $idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
    51.         $query = «SELECT 1 FROM objectsreports
    52.                   WHERE idobject = «.$ido.«
    53.                     AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
    54.         $ar = $cn->query($query)->fetch_assoc();
    55. function db_isObjectExits($cn, $oguid, $skbranch = NULL)
    56.                        FROM objects WHERE o_guid = ‘».$oguid.«‘
    57.                        AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
    58.         $ar = $cn->query($query)->fetch_assoc();
    59. function db_isObjectsMultianguage($cn, $oguid, $rguid, $skbranch = NULL)
    60.         $ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
    61.         $idr = db_getIDReportByGuid($cn, $rguid, 0, $skbranch);
    62.         $query = «SELECT 1 FROM objectsreports
    63.                   WHERE idobject = «.$ido.«
    64.                     AND (idlanguage IS NULL or idlanguage = 0)
    65.                     AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
    66.         $ar = $cn->query($query)->fetch_assoc();
    67. function db_getUserRightsToReport($cn, $user_ids, $rguid, $oguid, $idlanguageContent, $skbranch = NULL)
    68.     if (null === $user_ids || $user_ids[0] == 0 )
    69.         $deflangid = db_getDefaultLangID($cn);
    70.         $addSelectWithDefaultLang = «».($deflangid != null && $deflangid <> $idlanguageContent ? «OR rep.idlanguage = «.$deflangid.» « : «»);
    71.     //9791 Сначала запретим те отчеты, на которые стоит явный запрет
    72.     $query = «SELECT DISTINCT 1 FROM rightsreports as rr INNER JOIN reports as rep ON rr.idreport = rep.idreport AND rr.skbranch = rep.skbranch
    73.                        WHERE rr.iduser in («.$ids.«)
    74.                        AND rep.skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
    75.                        AND (rep.idlanguage = «.$idlanguageContent.» OR rep.idlanguage IS NULL OR rep.idlanguage = 0 «.$addSelectWithDefaultLang.«)
    76.     $ar = $cn->query($query)->fetch_assoc();
    77.     //9791 Теперь разрешим доступ к отчету, если объект отчета — наше физлицо.
    78.        $query = «SELECT DISTINCT 1 FROM users as u WHERE u.iduser in («.$ids.«) and u.user_guid='».mysqli_real_escape_string($cn,$oguid).«‘;»;
    79.        $ar = $cn->query($query)->fetch_assoc();


  12. antoniii

    С нами с:
    16 мар 2022
    Сообщения:
    324
    Симпатии:
    64

    Тогда что это за запрос :
    $query=»SELECT 1 FROM
    Что тут выбирается? цифра 1?


  13. Anton23_23

    С нами с:
    13 май 2022
    Сообщения:
    9
    Симпатии:
    0


  14. MouseZver

    С нами с:
    1 апр 2013
    Сообщения:
    7.562
    Симпатии:
    1.284
    Адрес:
    Лень

    ОтличноПомощь !== Раздел «сделай за меня»


  15. antoniii

    С нами с:
    16 мар 2022
    Сообщения:
    324
    Симпатии:
    64

    По моему там еще и фигурной скобки не хватает. Блок try catch оказался вне функции.


  16. Sail

    С нами с:
    1 ноя 2016
    Сообщения:
    1.524
    Симпатии:
    345

    @Anton23_23, фигурной скобки, завершающей функцию db_isReportNotExpire не хватает


  17. assaru

    С нами с:
    22 июл 2022
    Сообщения:
    3
    Симпатии:
    0

    Дабы не плодить темы, напишу здесь. Проблема абсолютно аналогичная.

    1. Call to a member function fetch_assoc() on boolean in /www/feeds/classes/ImportXmlDB.php:
    2. #0 /www/feeds/getXml.php(24): ImportXmlDB->getItemsFromDB()
    3.   thrown in /www/feeds/classes/ImportXmlDB.php on line
    1.         for($i = 3; $i < 17; $i++){
    2.             if(!$this->selectedCategories || in_array($i, $this->selectedCategories)){
    3.                 $paramJoins = $this->getParamJoins($i);
    4.                 /* Запрос для объектов */
    5.                            ‘.$paramJoins[‘select’].
    6.                            GROUP_CONCAT(i.`big` ORDER  BY i.ord ) AS photos
    7.                            LEFT JOIN realty r ON r.id=o.parent_id
    8.                            LEFT JOIN realty r1 ON r1.id=r.parent_id
    9.                            LEFT JOIN images i ON (i.record_id=o.id AND i.model IS NOT NULL)
    10.                            LEFT JOIN param_values price ON (price.record_id = o.id AND price.param_id=’.($i < 10 ? 24 : 40).‘)
    11.                                ‘.($this->excludeIdsString ? $this->excludeIdsString : »).
    12.                             /* Запрос для проектов */
    13.                             $queryStringProjects = ‘SELECT
    14.                            ‘.$paramJoins[‘select’].
    15.                            GROUP_CONCAT(i.`big` ORDER  BY i.ord ) AS photos
    16.                            LEFT JOIN realty r2 ON r2.id=o.parent_id
    17.                            LEFT JOIN images i ON (i.record_id=o.id AND i.model IS NOT NULL)
    18.                            LEFT JOIN param_values price ON (price.record_id = o.id AND price.param_id=’.($i < 10 ? 24 : 40).‘)
    19.                                ‘.($this->excludeIdsString ? $this->excludeIdsString : »).
    20.                 $resp = $this->query->query($queryString);
    21.                 $respProjects = $this->query->query($queryStringProjects);
    22. /********ниже строка с ошибкой *********/
    23.                 while($item = $resp->fetch_assoc()){
    24.                     if(!$this->selectedIds || in_array($item[‘id’], $this->selectedIds)){
    25.                 while($item = $respProjects->fetch_assoc()){
    26.                     if(!$this->selectedIds || in_array($item[‘id’], $this->selectedIds)){

    Буду признателен за наводку!


  18. mkramer

    Команда форума
    Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.493
    Симпатии:
    1.732

    Так методика одна отладки — собираешь запрос, и смотришь, работает ли в phpmyadmin или аналоге


  19. assaru

    С нами с:
    22 июл 2022
    Сообщения:
    3
    Симпатии:
    0

    Это понятно, переменные, условия в phpmyadmin не воткнуть.

    Можно поподробнее?


  20. mkramer

    Команда форума
    Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.493
    Симпатии:
    1.732

    Ну так напечатай готовый запрос, который отправляешь. Тем более он у тебя даже не подготовленныйAdminer, HeidySQL, сам PHP Storm, да куча ещё


  21. assaru

    С нами с:
    22 июл 2022
    Сообщения:
    3
    Симпатии:
    0

    Собрал готовый запрос, подправил ошибки,

    1.     public function getItemsFromDB(){
    2.         for($i = 3; $i < 17; $i++){
    3.             if(!$this->selectedCategories || in_array($i, $this->selectedCategories)){
    4.                 $paramJoins = $this->getParamJoins($i);
    5.                 $queryString = ‘SET SQL_BIG_SELECTS=1; SELECT o.id, o.name, o.text2, addr.value as addr, square.value as square, city.value as city, region.value as region, price.value as price, street.value as street, house.value as house, r1.id as category_id, ‘.$paramJoins[‘select’].‘ r1.parent_id, GROUP_CONCAT(i.`big` ORDER  BY i.ord ) AS photos FROM realty_objects o LEFT JOIN realty r ON r.id=o.parent_id LEFT JOIN realty r1 ON r1.id=r.parent_id LEFT JOIN images i ON (i.record_id=o.id AND i.model IS NOT NULL) LEFT JOIN param_values price ON (price.record_id = o.id AND price.param_id=’.($i < 10 ? 24 : 40).‘) ‘.$paramJoins[‘joins’].‘ WHERE o.`on`= 1 AND o.lng_id=1 AND r1.id = ‘.$i.‘ ‘.($this->excludeIdsString ? $this->excludeIdsString : »).‘ GROUP BY o.id’;
    6.                 $queryStringProjects = ‘SET SQL_BIG_SELECTS=1; SELECT o.id, o.name, o.text2, addr.value as addr, square.value as square, city.value as city, region.value as region, price.value as price, street.value as street, house.value as house, r2.id as category_id, ‘.$paramJoins[‘select’].‘ r2.parent_id, GROUP_CONCAT(i.`big` ORDER  BY i.ord ) AS photos FROM realty o LEFT JOIN realty r2 ON r2.id=o.parent_id LEFT JOIN images i ON (i.record_id=o.id AND i.model IS NOT NULL) LEFT JOIN param_values price ON (price.record_id = o.id AND price.param_id=’.($i < 10 ? 24 : 40).‘) ‘.$paramJoins[‘joins’].‘ WHERE o.`on`= 1 AND o.lng_id=1 AND r2.id = ‘.$i.‘ ‘.($this->excludeIdsString ? $this->excludeIdsString : »).‘ GROUP BY o.id’;
    7.                 $resp = $this->query->query($queryString);
    8.                 $respProjects = $this->query->query($queryStringProjects);
    9.                 while($item = $resp->fetch_assoc()){
    10.                     if(!$this->selectedIds || in_array($item[‘id’], $this->selectedIds)){
    11.                 while($item = $respProjects->fetch_assoc()){
    12.                     if(!$this->selectedIds || in_array($item[‘id’], $this->selectedIds)){

    в phpmyadmin отработал.

    Все равно вываливается

    1. Call to a member function query() on a non-object in /www/feeds/classes/ImportXmlDB.php on line 61

    61 строка

    1. $resp = $this->query->query($queryString);


  22. MouseZver

    С нами с:
    1 апр 2013
    Сообщения:
    7.562
    Симпатии:
    1.284
    Адрес:
    Лень

Страница 1 из 2

Поэтому в настоящее время я пытаюсь выполнить запрос PDO SELECT, но при выполнении и извлечении извлеченных данных появляется эта ошибка:

1 - Fatal error: Uncaught Error: Call to a member function fetch() on boolean in C:wamp64wwwNewKaliincludesuser.inc.php on line 53
2 - Error: Call to a member function fetch() on boolean in C:wamp64wwwNewKaliincludesuser.inc.php on line 53

Вот где я вызываю функцию:

include 'includes/user.inc.php';
$userOBJ = new User;
if($userOBJ->isAdmin($_SESSION['session_u-name'])){
AdminControl();
}

Код:

public function isAdmin($user){
$userToGet = $user;

$stmt = $this->Connect()->prepare("SELECT * FROM user_secure WHERE username_db=?");
$query1 = $stmt->execute([$userToGet]);

if(!$query1)
{
die("Execute query error, because: ". print_r($this->Connect()->errorInfo(),true) );
}else{
foreach ($query1->fetch() as $row) {
if($row['admin_db'] == 1){
return true;
} else {
return false;
}
}
}
}

Первая ошибка говорит о том, что я не обрабатываю ошибки PDO, что, по-моему, уже обрабатывает любые ошибки PDO в моем коде, но все равно как-то обнаруживается, поскольку я этого не делаю … (Исправьте меня, если ошибаетесь )

Вторая ошибка гласит, что вызов PDO-> fetch () возвращает логическое значение, но я запрашиваю данные, поэтому он не может продолжить выполнение следующего кода …
Я не понимаю, почему это показывает … Var «username_db» в запросе такой же, как у меня в моей БД.

В том же файле, что и функция выше, у меня есть следующая функция, и когда она вызывается, это нормально

public function RegisterUser($user, $pwd, $mail){
$u_Insert = $user;
$p_Insert = $pwd;
$m_Insert = $mail;

$stmt = $this->Connect()->prepare("INSERT INTO user_secure(username_db, password_db) VALUES (?,?)");
$query1 = $stmt->execute([$u_Insert, $p_Insert]);

$stmt = $this->Connect()->prepare("INSERT INTO user_info(mail_db) VALUES (?)");
$query2 = $stmt->execute([$m_Insert]);

if($query2 && $query1){
return true;
} else {
return false;
}
}

Я что-то упускаю?
Я уже проверил это нить но я все еще в точном положении …

Спасибо за ваше время

(Я все еще изучаю PDO, извините, если мой код не чистый)

0

Решение

Эта строка здесь является одной из причин. выполнять возвращает значение true или false, указывающее, был ли запрос успешным или неудачным.

$query1 = $stmt->execute([$userToGet]);

В некотором смысле, $ query1 является логическим значением.
Теперь в этих строках вы пытаетесь получить доступ к методу извлечения из $ query1, который является логическим.

  foreach ($query1->fetch() as $row) {
if($row['admin_db'] == 1){
return true;
} else {
return false;
}
}

Чтобы получить строку, вам нужно написать это так:

$results = $stmt->fetch();

или в вашем случае:

  foreach ( $stmt->fetch() as $row) {
if($row['admin_db'] == 1){
return true;
} else {
return false;
}
}

5

Другие решения

Других решений пока нет …

See more:

control.php

<?php

include("model.php");

$model = new Model;

if(isset($_POST['register'])) {
	$fname = $_POST['fname'];
	$lname = $_POST['lname'];
	$uname = $_POST['uname'];
	$pass = $_POST['pass'];
	$mail = $_POST['mail'];
	$add = $_POST['add'];
	$f = "upload/";
	$f = $f.$_FILES['file']['name'];
	move_uploaded_file($_FILES['file']['tmp_name'], $f);
	$data = array("firstname"=>$fname, "lastname"=>$lname, "username"=>$uname, "password"=>$pass, "email"=>$mail, "address"=>$add, "file"=>$f);
	$model->insertall($conn, "user", $data);
	echo "inserted";
	header("Location:view_user.php");
}

$select = $model->selectall($conn, "user");

if(isset($_GET['del'])) {
	$id = $_GET['del'];
	$result = $model->deleteall($conn, "user", $id);
	if($result == false) {
		echo "Error: cannot delete user";
		return false;	
	} else {
		return true;
	}
}

if(isset($_GET['edit'])) {
	$eid = $_GET['edit'];
	$where = array("id"=>$eid);
	$fetch = $model->select_where($conn, "user", $where);
	$edit = $fetch->fetch_object();
	if(isset($_POST['update'])) {
	$fname = $_POST['fname'];
	$lname = $_POST['lname'];
	$uname = $_POST['uname'];
	$mail = $_POST['mail'];
	$add = $_POST['add'];
	$f = "upload/";
	$f = $f.$_FILES['file']['name'];
	move_uploaded_file($_FILES['file']['tmp_name'], $f);
	$data = array("firstname"=>$fname, "lastname"=>$lname, "username"=>$uname, "email"=>$mail, "address"=>$add, "file"=>$f);
	$model->updateall($conn, "user", $data,$where);
	echo "updated";
	header("Location:view_user.php");
	}
}

?>

model.php

<?php

include("conn.php");
$obj = new Connection;
$conn = $obj->connect();

class Model {
	function insertall($conn, $table, $data) {
		$keys = array_keys($data);
		$key = implode(",", $keys);
		
		$vals = array_values($data);
		$val = implode("','", $data);
		
		$ins = "INSERT INTO $table($key) VALUES('$val')";
		$conn->query($ins);
	}
	
	function selectall($conn, $table) {
		$sel = "SELECT * FROM $table";
		$res = $conn->query($sel);
		while ($row = $res->fetch_object()) {
			$r[] = $row;
		}
		return $r;
	}
	
	function deleteall($conn, $table, $id) {
		$del = "DELETE FROM $table WHERE id='$id' ";
		$result = $conn->query($del);
		if($result) {
			header("Location: view_user.php");
		}
	}
	
	function select_where($conn, $table, $where) {
		$wkey = array_keys($where);
		$wval = array_values($where);
		$sel = "SELECT * FROM $table WHERE";
		$i = 0;
		foreach($where as $w) {
			$sel.= "$wkey[$i] = '$wval[$i]'";
			$i++;
		}
		return $conn->query($sel);
	}
	
	function updateall($conn, $table, $data, $where) {
		$wkey = array_keys($where);
		$wval = array_values($where);
		
		$dkey = array_keys($data);
		$dval = array_values($data);
		
		$up = "UPDATE $table SET";
		$count = count($data);
		$i = 0;
		foreach ($data as $d) {
			if ($count == $i + 1) {
				$up.= "$dkey[$i] = '$dval[$i]'";
			} else {
				$up.= "$dkey[$i] = '$dval[$i]',";
			}
			$i++;
		}
		$up.= "WHERE 1 = 1";
		$j = 0;
		foreach($where as $w) {
			$up.= "AND $wkey[$j] = '$wval[$j]'";
			$j++;
		}
		return $conn->query($up);
	}
	
}

?>

edit.php

<?php
include("control.php");
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>registration</title>
</head>

<body>
<h1><center>Registration</center></h1><hr/>
	<form method="post" enctype="multipart/form-data">
		<table border="1" align="center">
			<tr>
				<td>First Name:</td>
				<td><input type="text" name="fname" required="" value="<?php  echo $edit->firstname;  ?>"></td>
			</tr>
			<tr>
				<td>last Name:</td>
				<td><input type="text" name="lname" required="" value="<?php  echo $edit->lastname;  ?>"></td>
			</tr>
			<tr>
				<td>User Name:</td>
				<td><input type="text" name="uname" required="" value="<?php  echo $edit->username;  ?>"></td>
			</tr>
			<tr>
				<td>Email ID:</td>
				<td><input type="email" name="mail" required="" value="<?php  echo $edit->email;  ?>"></td>
			</tr>
			<tr>
				<td>Address:</td>
				<td><textarea name="add" required="" rows="3" cols="21"><?php  echo $edit->address;  ?></textarea></td>
			</tr>
			<tr>
				<td>File:</td>
				<td><input type="file" name="file" required="" value="<?php  echo $edit->file;  ?>"></td>
			</tr>
			<tr>
				<td colspan="2"><center><input type="submit" name="update" value="Update"></center></td>
			</tr>
		</table>
	</form>
</body>
</html>

view_user.php

<?php
include("control.php");
?>
<!DOCTYPE html>
<html>
<head>
	<title>View User Details</title>
</head>
<body>
		<form method="post">
			<table border="1">
				<tr>
					<th>id</th>
					<th>First Name</th>
					<th>Last Name</th>
					<th>User Name</th>
					<th>Email Id</th>
					<th>Address</th>
					<th>File</th>
					<th>Delete</th>
					<th>Edit</th>
				</tr>
			<?php
				foreach($select as $s)
				{
			?>
						<tr>
							<td><?php echo $s->id; ?></td>
							<td><?php echo $s->firstname; ?></td>
							<td><?php echo $s->lastname; ?></td>
							<td><?php echo $s->username; ?></td>
							<td><?php echo $s->email; ?></td>
							<td><?php echo $s->address; ?></td>
							<td><img src="<?php echo $s->file; ?>" height="100px" width="100px"></td>
							<td><a href="view_user.php?del=<?php echo $s->id; ?>">Delete </a></td>
							<td><a href="edit.php?edit=<?php echo $s->id; ?>">Edit </a></td>
						</tr>
						<?php
						}
					?>
			</table>	
		</form>
</body>
</html>

when perform edit this error occured:

Fatal error: Uncaught Error: Call to a member function fetch_object() on boolean in C:xampphtdocscrud_phpcrudcontrol.php:40 Stack trace: #0 C:xampphtdocscrud_phpcrudedit.php(2): include() #1 {main} thrown in C:xampphtdocscrud_phpcrudcontrol.php on line 40

What I have tried:

when perform edit this error occured:

Fatal error: Uncaught Error: Call to a member function fetch_object() on boolean in C:xampphtdocscrud_phpcrudcontrol.php:40 Stack trace: #0 C:xampphtdocscrud_phpcrudedit.php(2): include() #1 {main} thrown in C:xampphtdocscrud_phpcrudcontrol.php on line 40

Vassillissk

1 / 1 / 0

Регистрация: 12.12.2015

Сообщений: 89

1

14.12.2015, 11:46. Показов 13253. Ответов 3

Метки нет (Все метки)


Сам код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$news=$mysqli->query("SELECT id, title, description, img_url "
                            . "FROM news "
                            . "ORDER BY id DESC"
                            . "LIMIT 5"
                            );
                            var_dump($news);
        $rows = $news->fetch_assoc();
        do
        {
           $result_content .=$this->getView(
                   "title_tmp", $rows['title'],
                   "content_tmp", $rows['description'],
                   "img_url", $rows['img_url'],
                   "id_tmp", $rows['id']
                   );   
        }
        while($rows = $news->fetch_assoc());

Ошибка:

SQL
1
2
bool(FALSE) 
Fatal error: CALL TO a member FUNCTION fetch_assoc() ON BOOLEAN IN C:OpenServerdomainslocalhostengineclassesINDEX.class.php ON line 27

Если убрать . «LIMIT 5», то все работает.

Миниатюры

Ошибка Call to a member function fetch_assoc() on boolean
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



471 / 399 / 169

Регистрация: 04.01.2013

Сообщений: 1,675

14.12.2015, 12:00

2

Лучший ответ Сообщение было отмечено Vassillissk как решение

Решение

Пробел после DESC добавьте или перед LIMIT



1



1 / 1 / 0

Регистрация: 12.12.2015

Сообщений: 89

14.12.2015, 12:50

 [ТС]

3

Странно. Не встречал такое. Да и у автора кода пробела нет. Спасибо большое, все перепробовал, сам бы не догадался!



0



СлаваВирус

471 / 399 / 169

Регистрация: 04.01.2013

Сообщений: 1,675

14.12.2015, 12:52

4

Ну просто представьте вы склеиваете строки и при наличии LIMIT у вас запрос получился вида

SQL
1
SELECT id, title, description, img_url FROM news ORDER BY id DESCLIMIT 5

Соответственно он не выполнится)))



2



Как это исправить? При том что скрипт работает и отправляет данные в БД

Ошибка полностью

Fatal error: Uncaught Error: Call to a member function fetch_object() on boolean in W:domainslocalhostDB.php:26 Stack trace: #0 W:domainslocalhosthandler.php(39): DB->query('INSERT INTO sho...') #1 {main} thrown in W:domainslocalhostDB.php on line 26

Handler.php

<?php

require_once 'DB.php';


$grade_ch = check_input($_POST["grade"], "Введите класс!");
$sho_name_ch = check_input($_POST["sho_name"], "Введите имя!");
$radio_ch = check_input($_POST["y_n"], "Да или нет?");
$b_day_ch = check_input($_POST["b_day"], "Ввведите дату");

//Если при заполнении формы были допущены ошибки сработает следующий код:
function check_input($data, $problem = "")
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    if ($problem && strlen($data) == 0) {
        show_error($problem);
    }
    return $data;
}

function show_error($myError)
{
    ?>
    <html>
    <body>
    <p>Пожалуйста исправьте следующую ошибку:</p>
    <?php echo $myError; ?>
    </body>
    </html>
    <?php
    exit();
}

$grade = $_POST["grade"];
$sho_name = $_POST["sho_name"];
$y_n = $_POST["y_n"];
$b_day = $_POST["b_day"];

$result = DB::getInstance()->query("INSERT INTO sholar (grade, sho_name, y_n, b_day) VALUES ('$grade', '$sho_name', '$y_n', '$b_day')");


if ($result == true) {
    echo "Информация занесена в базу данных";
} else {
    echo "Информация не занесена в базу данных";
}


// }

DB.php

<?php
class DB {
    private $_mysqli,
            $_query,
            $_results = array(),
            $_count = 0;

    public static $instance;

    public static function getInstance() {
        if(!isset(self::$instance)) {
            self::$instance = new DB();
        }
        return self::$instance;
    }

    public function __construct() {
        $this->_mysqli = new mysqli('127.0.0.1', 'root', '', 'test');
        if ($this->_musqli->connect_error) {
            die($this->_mysqli->connect_error);
        }
    }

    public function query($sql) {
        if ($this->_query = $this->_mysqli->query($sql)) {
              while ($row = $this->_query->fetch_object()) {
                $this->_results[] = $row;
              }
              $this->_count = $this->_query->num_rows;
        }
        return $this;
    }



    public function results() {
        return $this->_results;
    }

    public function count() {
        return $this->_count;
    }
}

строка 26 класса db

while ($row = $this->_query->fetch_object()) {

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Fatal error uncaught error array callback has to contain indices 0 and 1
  • Fatal error викед вимс
  • Fatal error арт
  • Fatal error uncaught error access to undeclared static property
  • Fatal error аллоды

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии