Загрузка...

Помогите! У меня тут ошибка с фейком

Тема в разделе Веб-разработка создана пользователем AlloY 13 июн 2018. 401 просмотр

  1. AlloY
    AlloY Автор темы 13 июн 2018 Заблокирован(а)
    Ребят, сижу на форумах, читаю и всё равно не получается пофиксить эту ошибку:
    Код
    Fatal error: Call to a member function fetch_assoc() on boolean in

    Вот сам код:
    PHP
    function getFields($tblName){
    $dbName = $this->getDBName();
    $result_set = $this->connection->query("SHOW COLUMNS IN `".$tblName."` IN ".$dbName);
    $res_arr = array();
    $i = 0;
    while ($row = $result_set->fetch_assoc()) {
    $res_arr[$i] = $row["Field"];
    $i++;
    }
    return $res_arr;
    }
    Жалуется на строку
    Код
    while ($row = $result_set->fetch_assoc()) {
     
  2. swmf
    swmf 13 июн 2018 101 8 дек 2017
    AlloY, запрос на валидность проверь, скорее всего он невалиден, и скорее всего запрос твой возвращает FALSE
    Чекни что в результате запроса: var_dump($result_set);
     
  3. AlloY
    AlloY Автор темы 13 июн 2018 Заблокирован(а)
    swmf, NULL Fatal error: Call to a member function fetch_assoc() on boolean
     
  4. USDC
    Код целиком показывай, а не этот кусок.
     
  5. swmf
    swmf 13 июн 2018 101 8 дек 2017
    AlloY, NULL - значит в запросе ошибка
     
  6. AlloY
    AlloY Автор темы 13 июн 2018 Заблокирован(а)
    @scr.asia,
    PHP
    <?php
    require_once "classConnection.php";

    class DB {
    private $connection;

    public function __construct() {
    $this->connection = new Connection();
    }

    function getDBName(){
    $result = $this->connection->query("SELECT DATABASE()");
    $row = $result->fetch_row();
    return $row[0];
    }

    function getTables(){
    $dbName = $this->getDBName();
    $result_set = $this->connection->query("SHOW TABLES IN ".$dbName);
    $res_arr = array();
    $i = 0;
    while ($row = $result_set->fetch_assoc()) {
    $res_arr[$i] = $row["Tables_in_".$dbName];
    $i++;
    }
    return $res_arr;
    }

    function getFields($tblName){
    $dbName = $this->getDBName();
    $result_set = $this->connection->query("SHOW COLUMNS IN `".$tblName."` IN ".$dbName);
    $res_arr = array();
    $i = 0;
    while ($row = $result_set->fetch_assoc()) {
    $res_arr[$i] = $row["Field"];
    $i++;
    }
    return $res_arr;
    }

    function checkRow($tblName, $field, $value){
    $result_set = $this->connection->query("SELECT COUNT(*) FROM `".$tblName."` WHERE `".$field."` = '".$value."'");
    while ($row = $result_set->fetch_assoc()) {
    if ($row["COUNT(*)"] > 0) return true;
    else return false;
    }
    }

    function truncateTable($tblName){
    $result = $this->connection->query("TRUNCATE TABLE `".$tblName."`");
    }

    function getRows($tblName, $field, $value){
    $result_set = $this->connection->query("SELECT * FROM `".$tblName."` WHERE `".$field."` = '".$value."'");

    $res_arr = array();
    $i = 0;

    $fields = $this->getFields($tblName);

    while ($row = $result_set->fetch_assoc()) {
    $temp_arr = array();

    for ($j = 0; $j < count($fields); $j++){
    $temp_arr[$fields[$j]] = $row[$fields[$j]];
    }

    $res_arr[$i] = $temp_arr;
    $i++;
    }
    return $res_arr;
    }

    function countRows($tblName, $fieldsAndValues){
    $q = "SELECT COUNT(*) FROM `".$tblName."` WHERE ";

    $counter = 0;
    foreach ($fieldsAndValues as $field => $value) {
    $q .= "`".$field."` = '".$value."'";
    $counter++;
    if ($counter != count($fieldsAndValues)) $q .= " AND ";
    }

    $result_set = $this->connection->query($q);

    while ($row = $result_set->fetch_assoc()) {
    return $row["COUNT(*)"];
    }
    }

    function countAllRows($tblName) {
    $result_set = $this->connection->query("SELECT COUNT(*) FROM `".$tblName."` WHERE 1");

    while ($row = $result_set->fetch_assoc()) {
    return $row["COUNT(*)"];
    }
    }

    function getListRows($tblName, $sort = true, $orderBy = "id", $fieldsAndValues = false, $limit = false, $offset = 0, $number = 0){
    if ($sort == true) $sort = "ASC";
    else $sort = "DESC";
    $q = $q = "SELECT * FROM `".$tblName."`";
    if ($fieldsAndValues != false) {
    $q .= " WHERE ";
    $counter = 0;
    foreach ($fieldsAndValues as $field => $value) {
    $q .= "`".$field."` = '".$value."'";
    $counter++;
    if ($counter != count($fieldsAndValues)) $q .= " AND ";
    }
    }
    $q .= " ORDER BY `".$orderBy."` ".$sort;
    if ($limit == true) $q .= " LIMIT ".$offset.",".$number;

    // echo $q;
    $result_set = $this->connection->query($q);

    $res_arr = array();
    $i = 0;

    $fields = $this->getFields($tblName);

    while ($row = $result_set->fetch_assoc()) {
    $temp_arr = array();

    for ($j = 0; $j < count($fields); $j++){
    $temp_arr[$fields[$j]] = $row[$fields[$j]];
    }

    $res_arr[$i] = $temp_arr;
    $i++;
    }

    return $res_arr;
    }

    function addRow($tblName, $values) {
    $fields = $this->getFields($tblName);
    $q = "INSERT INTO `".$tblName."` (";

    for ($i = 0; $i < count($fields); $i++){
    if ($i != (count($fields)-1)){
    $q .= "`".$fields[$i]."`, ";
    }
    else {
    $q .= "`".$fields[$i]."`)";
    }
    }

    $q .= " values(";

    for ($i = 0; $i < count($values); $i++){
    if ($i != (count($values)-1)){
    $q .= "'".$values[$i]."', ";
    }
    else {
    $q .= "'".$values[$i]."')";
    }
    }

    $this->connection->query($q);
    }

    function updateRow($tblName, $needed_field, $needed_value, $fieldsAndValues){
    $q = "UPDATE `".$tblName."` SET ";

    $counter = 0;
    foreach ($fieldsAndValues as $field => $value) {
    $q .= "`".$field."` = '".$value."'";
    $counter++;
    if ($counter != count($fieldsAndValues)) $q .= ", ";
    }
    $q .= " WHERE `".$needed_field."` = '".$needed_value."'";

    $this->connection->query($q);
    }

    function deleteRow($tblName, $field, $value){
    $this->connection->query("DELETE FROM `".$tblName."` WHERE `".$field."` = '".$value."'");
    }

    function getFieldSum($tblName, $field) {
    $q = "SELECT sum(`".$field."`) FROM `".$tblName."`";
    // echo $q;
    $result_set = $this->connection->query($q);
    while ($row = $result_set->fetch_assoc()) {
    return $row["sum(`".$field."`)"];
    }
    }
    }
    ?>
     
  7. USDC
    AlloY,
     
  8. renameduser_8798
    renameduser_8798 13 июн 2018 Заблокирован(а) 211 26 фев 2014
    Я бы тоже жаловался на код 2006 года (я о стиле и функциях)
     
  9. AlloY
    AlloY Автор темы 13 июн 2018 Заблокирован(а)
    @scr.asia,
     
  10. AlloY
    AlloY Автор темы 13 июн 2018 Заблокирован(а)
    ну извините, как-то так ))
     
  11. USDC
    AlloY, полный текст ошибки
     
  12. AloneStare
    AloneStare 13 июн 2018 Заблокирован(а) 118 12 июн 2017
    Если жалуется на строку с циклом, то у тебя проблема в условии, а в частности или никогда не будет равно, или запрос во второй половине не валиден, тоесть всегда возвращает результат NULL
     
  13. AlloY
    AlloY Автор темы 13 июн 2018 Заблокирован(а)
    @scr.asia, Fatal error: Call to a member function fetch_array() on boolean in public_html/php/classDB.php on line 33
    33 line - while ($row = $result_set->fetch_array()) {
     
  14. AlloY
    AlloY Автор темы 13 июн 2018 Заблокирован(а)
    та я совсем тупенький в этом, учусь только )
     
  15. swmf
    swmf 13 июн 2018 101 8 дек 2017
    AlloY, чел, я тебе сказал тоже самое, что и он, запрос не валиден, проверь его и исправь ошибки в нём
     
  16. USDC
    AlloY, значит при вызове в функцию неверно передается параметр $tblName - а конкретнее, такой таблицы в базе нет.
     
  17. USDC
    Запрос к базе посылается верный, этих людей выше слушать не надо.
     
  18. AlloY
    AlloY Автор темы 13 июн 2018 Заблокирован(а)
     
  19. AloneStare
    AloneStare 13 июн 2018 Заблокирован(а) 118 12 июн 2017
    Дядя, ты тут не профессионал, я бы посчитал что слушать тебя не надо, ошибка в точном месте, значит по какой - либо причине не могут появиться значения в цикле while, следовательно или запрос неверный, или ты пользовался ЧПУ ссылками, или нет такой таблицы.
     
  20. USDC
    Я и не позиционирую себя в данном ключе, в отличие от некоторых. Тебе бы так же не мешало это понять. Запрос к БД посылается верный, явную причину ошибки я указал выше. Отдохни.
     
Top
Загрузка...