Попытка получить свойство необъектного и неопределенного индекса erroe - PullRequest
0 голосов
/ 03 июня 2018

Я только что перенес сайт на основе пользовательской CMS на новый сервер.После миграции я получаю уведомления и предупреждения по всей административной области, где контент может быть отредактирован.

Notice: Trying to get property of non-object in database.php on line 69
Notice: Undefined index: in database.php on line 69

Ниже приведены функции, которые используются в процессе:

function dbQuerySafener($query,$params=false) {
    $link= db_connect();
    if ($params) {
       foreach ($params as &$v) {
          $v = mysqli_real_escape_string($link,$v);
       }

       $sql_query = vsprintf( str_replace("?","'%s'",$query), $params );
    } else {
    $sql_query = $query;
 }
 return $sql_query;
}

// query returning ARRAY (many rows)
 function dbArray($query,$params=false) {
   $link= db_connect();
   $table_result=array();
   $r=0;
   $sql = dbQuerySafener($query, $params);
   $result = mysqli_query($link,$sql) or die(mysqli_error($link)." 
   <br>".$sql);
   while($row = mysqli_fetch_assoc($result)) {
       $arr_row=array();
       $c=0;
       while ($c < mysqli_num_fields($result)) {
          $col = mysqli_fetch_field($result);
          $arr_row[$col -> name] = $row[$col -> name]; // line 69
          $c++;
       }
    $table_result[$r] = $arr_row;
    $r++;
    }
    return $table_result;
  }

Он работает следующим образом: SQL-запрос будет передан функции dbArray, например:

 $sql = "SELECT `id`, `emailAddress`, `name` FROM `gcms_users` 
 WHERE `active`=?";
 $data = dbArray($sql, array(1));

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ: две вышеупомянутые функции будут извлекать результаты из базы данных, которая должна содержать имя поля и его значение, например:

  Array ( [0] => Array ( [id] => 1 [emailAddress] => admin@email.com 
  [name] => John ) [1] => Array ( [id] => 1 [emailAddress] => 
  paul@email.com [name] => Paul ) ) 

АКТУАЛЬНЫЙ РЕЗУЛЬТАТ:

  Array ( [0] => Array ( [id] => 1 [emailAddress] => admin@email.com [name] => John ) [1] => Array ( [] => ) )

Существует некоторая проблема с функцией dbArray () при извлечении строк, но я не понимаю, чего здесь не хватает.Ваша помощь будет высоко оценена.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Указатель mysqli_fetch_field не сбрасывается в первый раз, попробуйте

mysqli_field_seek($result, 0); после $r++;

0 голосов
/ 03 июня 2018

Вы не можете повторить цикл mysqli_num_fields ().Вы можете сначала извлечь столбцы, а затем просмотреть данные.

function dbArray($query,$params=false) {
       $link= db_connect();
       $table_result=array();
       $r=0;
       $sql = dbQuerySafener($query, $params);
       $result = mysqli_query($link,$sql) or die(mysqli_error($link)." 
       <br>".$sql);

       $columns = array();
       while($col = mysqli_num_fields($result)) {
        $columns[] = $col->name;
       }

       while($row = mysqli_fetch_assoc($result)) {
           $arr_row = array();
           foreach($columns as $col){
              $arr_row[$col] = $row[$col];
           }
           $table_result[$r] = $arr_row;
           $r++;
        }
        return $table_result;
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...