За последние 24 часа нас посетили 11467 программистов и 1168 роботов. Сейчас ищут 307 программистов …
Страница 1 из 2
-
- С нами с:
- 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);
} -
- С нами с:
- 13 май 2022
- Сообщения:
- 9
- Симпатии:
- 0
Я совсем не разбираюсь в этом, поэтому и спросил здесь, чтобы мне прям тыкнули пальцем, что именно нужно изменить)
-
- С нами с:
- 1 ноя 2016
- Сообщения:
- 1.524
- Симпатии:
- 345
возвращает false вместо объекта, у которого есть метод fetch_assoc().
Посмотрите, какой сформировали запрос в $query -
- С нами с:
- 13 май 2022
- Сообщения:
- 9
- Симпатии:
- 0
-
- С нами с:
- 1 апр 2013
- Сообщения:
- 7.562
- Симпатии:
- 1.284
- Адрес:
- Лень
Во фрилансе по наему специалиста, а не тогда, когда работник Кафе пытается выпендриться перед начальством, при этом сам ни*уя не знает куда и зачем лезет. Приходит во форумы и с кислой моськой выкладывает кусок говнокода, указывает на причину и при этом сам палец об палец ничего для решения не сделал. Лови отзыв о себе.
-
- С нами с:
- 13 май 2022
- Сообщения:
- 9
- Симпатии:
- 0
Я просил помощь, а не комментарии о том что я ничего не знаю от рандомного типа. Если не можешь или не хочешь помочь не нужно выписывать, будь добрее чел…
-
- С нами с:
- 1 ноя 2016
- Сообщения:
- 1.524
- Симпатии:
- 345
Преобразуйте часть кода, например, таким образом:
-
$ar = $cn->query($query)->fetch_assoc(); // 2161 строчка кода
-
exit; // прервать выполнение (Fatal error отлаживаем)
И ищите там, куда лог пишется
-
- С нами с:
- 16 мар 2022
- Сообщения:
- 324
- Симпатии:
- 64
Ошибка в строке запроса:
-
$query = «SELECT 1 FROM `reportindex`
-
WHERE idobject = «.$ido.«
-
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).«
Какая ошибка, зависит от того, что запрашиваем. Ведь я не знаю что ищем.
-
- С нами с:
- 13 май 2022
- Сообщения:
- 9
- Симпатии:
- 0
Спасибо, вечером попробую и отпишу
-
- С нами с:
- 13 май 2022
- Сообщения:
- 9
- Симпатии:
- 0
-
- С нами с:
- 13 май 2022
- Сообщения:
- 9
- Симпатии:
- 0
Это индексация отчетов, вот код:
-
// дата создания отчета ( индексации )
-
function db_getReportCreationDate($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL){
-
$ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
-
$idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
-
$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;»;
-
$ar = $cn->query($query)->fetch_assoc();
-
return $ar[‘ri_creationdate’];
-
function db_getReportIndexBody($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL){
-
$ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
-
$idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
-
$query = «SELECT `body` as body FROM `reportindex` WHERE idobject = «.$ido.» and idreport = «.$idr.» LIMIT 1;»;
-
$ar = $cn->query($query)->fetch_assoc();
-
function db_isReportNotExpire($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
-
$ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
-
$idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
-
$query = «SELECT 1 FROM `reportindex`
-
WHERE idobject = «.$ido.«
-
AND (ri_expirationdate_tmst is not null)
-
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).«
-
$ar = $cn->query($query)->fetch_assoc();
-
function db_isReportHaveExpireDate($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
-
$ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
-
$idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
-
$query = «SELECT 1 FROM `reportindex`
-
WHERE idobject = «.$ido.«
-
AND (ri_expirationdate_tmst is not null)
-
AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
-
$ar = $cn->query($query)->fetch_assoc();
-
function db_ReportResetExpireDate($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
-
$ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
-
$idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
-
$query = ‘SET @@session.time_zone = «+00:00»;’;
-
$result = $cn->query($query);
-
$query = «UPDATE `reportindex`
-
SET ri_expirationdate_tmst = UNIX_TIMESTAMP(NOW())
-
WHERE idobject = «.$ido.«
-
AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«;»;
-
$result = $cn->query($query);
-
function db_getReportIDLanguage($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
-
$ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
-
$idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
-
$query = «SELECT `idlanguage` FROM `objectsreports`
-
WHERE idobject = «.$ido.«
-
AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«;»;
-
$ar = db_runQueryAndReturnArray($cn, $query);
-
return $ar[0][‘idlanguage’];
-
function db_isObjectsReportsExits($cn, $oguid, $rguid, $idlanguage, $skbranch = NULL)
-
$ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
-
$idr = db_getIDReportByGuid($cn, $rguid, $idlanguage, $skbranch);
-
$query = «SELECT 1 FROM objectsreports
-
WHERE idobject = «.$ido.«
-
AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
-
$ar = $cn->query($query)->fetch_assoc();
-
function db_isObjectExits($cn, $oguid, $skbranch = NULL)
-
FROM objects WHERE o_guid = ‘».$oguid.«‘
-
AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
-
$ar = $cn->query($query)->fetch_assoc();
-
function db_isObjectsMultianguage($cn, $oguid, $rguid, $skbranch = NULL)
-
$ido = db_getIDObjectByGuid($cn, $oguid, $skbranch);
-
$idr = db_getIDReportByGuid($cn, $rguid, 0, $skbranch);
-
$query = «SELECT 1 FROM objectsreports
-
WHERE idobject = «.$ido.«
-
AND (idlanguage IS NULL or idlanguage = 0)
-
AND skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
-
$ar = $cn->query($query)->fetch_assoc();
-
function db_getUserRightsToReport($cn, $user_ids, $rguid, $oguid, $idlanguageContent, $skbranch = NULL)
-
if (null === $user_ids || $user_ids[0] == 0 )
-
$deflangid = db_getDefaultLangID($cn);
-
$addSelectWithDefaultLang = «».($deflangid != null && $deflangid <> $idlanguageContent ? «OR rep.idlanguage = «.$deflangid.» « : «»);
-
//9791 Сначала запретим те отчеты, на которые стоит явный запрет
-
$query = «SELECT DISTINCT 1 FROM rightsreports as rr INNER JOIN reports as rep ON rr.idreport = rep.idreport AND rr.skbranch = rep.skbranch
-
WHERE rr.iduser in («.$ids.«)
-
AND rep.skbranch = «.($skbranch == NULL ? «(SELECT `skbranch` FROM `branches` WHERE ismain = 1 LIMIT 1)»: $skbranch).«
-
AND (rep.idlanguage = «.$idlanguageContent.» OR rep.idlanguage IS NULL OR rep.idlanguage = 0 «.$addSelectWithDefaultLang.«)
-
$ar = $cn->query($query)->fetch_assoc();
-
//9791 Теперь разрешим доступ к отчету, если объект отчета — наше физлицо.
-
$query = «SELECT DISTINCT 1 FROM users as u WHERE u.iduser in («.$ids.«) and u.user_guid='».mysqli_real_escape_string($cn,$oguid).«‘;»;
-
$ar = $cn->query($query)->fetch_assoc();
-
- С нами с:
- 16 мар 2022
- Сообщения:
- 324
- Симпатии:
- 64
Тогда что это за запрос :
$query=»SELECT 1 FROM
Что тут выбирается? цифра 1? -
- С нами с:
- 13 май 2022
- Сообщения:
- 9
- Симпатии:
- 0
-
- С нами с:
- 1 апр 2013
- Сообщения:
- 7.562
- Симпатии:
- 1.284
- Адрес:
- Лень
ОтличноПомощь !== Раздел «сделай за меня»
-
- С нами с:
- 16 мар 2022
- Сообщения:
- 324
- Симпатии:
- 64
По моему там еще и фигурной скобки не хватает. Блок try catch оказался вне функции.
-
- С нами с:
- 1 ноя 2016
- Сообщения:
- 1.524
- Симпатии:
- 345
@Anton23_23, фигурной скобки, завершающей функцию db_isReportNotExpire не хватает
-
- С нами с:
- 22 июл 2022
- Сообщения:
- 3
- Симпатии:
- 0
Дабы не плодить темы, напишу здесь. Проблема абсолютно аналогичная.
-
Call to a member function fetch_assoc() on boolean in /www/feeds/classes/ImportXmlDB.php:
-
#0 /www/feeds/getXml.php(24): ImportXmlDB->getItemsFromDB()
-
thrown in /www/feeds/classes/ImportXmlDB.php on line
-
for($i = 3; $i < 17; $i++){
-
if(!$this->selectedCategories || in_array($i, $this->selectedCategories)){
-
$paramJoins = $this->getParamJoins($i);
-
/* Запрос для объектов */
-
‘.$paramJoins[‘select’].‘
-
GROUP_CONCAT(i.`big` ORDER BY i.ord ) AS photos
-
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).‘)
-
‘.($this->excludeIdsString ? $this->excludeIdsString : »).‘
-
/* Запрос для проектов */
-
$queryStringProjects = ‘SELECT
-
‘.$paramJoins[‘select’]. ‘
-
GROUP_CONCAT(i.`big` ORDER BY i.ord ) AS photos
-
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).‘)
-
‘.($this->excludeIdsString ? $this->excludeIdsString : »). ‘
-
$resp = $this->query->query($queryString);
-
$respProjects = $this->query->query($queryStringProjects);
-
/********ниже строка с ошибкой *********/
-
while($item = $resp->fetch_assoc()){
-
if(!$this->selectedIds || in_array($item[‘id’], $this->selectedIds)){
-
while($item = $respProjects->fetch_assoc()){
-
if(!$this->selectedIds || in_array($item[‘id’], $this->selectedIds)){
Буду признателен за наводку!
-
Команда форума
Модератор- С нами с:
- 20 июн 2012
- Сообщения:
- 8.493
- Симпатии:
- 1.732
Так методика одна отладки — собираешь запрос, и смотришь, работает ли в phpmyadmin или аналоге
-
- С нами с:
- 22 июл 2022
- Сообщения:
- 3
- Симпатии:
- 0
Это понятно, переменные, условия в phpmyadmin не воткнуть.
Можно поподробнее?
-
Команда форума
Модератор- С нами с:
- 20 июн 2012
- Сообщения:
- 8.493
- Симпатии:
- 1.732
Ну так напечатай готовый запрос, который отправляешь. Тем более он у тебя даже не подготовленныйAdminer, HeidySQL, сам PHP Storm, да куча ещё
-
- С нами с:
- 22 июл 2022
- Сообщения:
- 3
- Симпатии:
- 0
Собрал готовый запрос, подправил ошибки,
-
public function getItemsFromDB(){
-
for($i = 3; $i < 17; $i++){
-
if(!$this->selectedCategories || in_array($i, $this->selectedCategories)){
-
$paramJoins = $this->getParamJoins($i);
-
$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’;
-
$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’;
-
$resp = $this->query->query($queryString);
-
$respProjects = $this->query->query($queryStringProjects);
-
while($item = $resp->fetch_assoc()){
-
if(!$this->selectedIds || in_array($item[‘id’], $this->selectedIds)){
-
while($item = $respProjects->fetch_assoc()){
-
if(!$this->selectedIds || in_array($item[‘id’], $this->selectedIds)){
в phpmyadmin отработал.
Все равно вываливается
-
Call to a member function query() on a non-object in /www/feeds/classes/ImportXmlDB.php on line 61
61 строка
-
$resp = $this->query->query($queryString);
-
- С нами с:
- 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 Метки нет (Все метки)
Сам код:
Ошибка:
Если убрать . «LIMIT 5», то все работает. Миниатюры
__________________
0 |
|
471 / 399 / 169 Регистрация: 04.01.2013 Сообщений: 1,675 |
|
|
14.12.2015, 12:00 |
2 |
|
РешениеПробел после 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 у вас запрос получился вида
Соответственно он не выполнится)))
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()) {

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