2014-09-10 3 views
0

я получаю эту ошибку:Получение fetch_object() Ошибка при успешном запросе

Fatal error: Call to a member function fetch_object() on a non-object in C:\.....php on line 136 

Вот код:

if ($result = $mysqli->query("INSERT INTO partlistlist (P_fam , P_code , P_name, P_var , P_ver , P_lnk , P_fol , P_Notes , P_status , P_op) VALUES (\"".$mod_fam ."\", \"".$mod_code ."\", \"".$mod_name ."\", \"".$mod_var ."\", 1 , \"".$mod_lnk ."\", \"".$mod_fold ."\", \"".$mod_note  ."\", \"".$mod_stat ."\", \"". $_SESSION['wh_pwd_usr']."\" ) ")); 
{ 
    echo "<br>Articolo creato con successo"; 
    $created_id = $mysqli->insert_id; 
    if (!$result = $mysqli->query("SELECT * FROM partlistlist WHERE P_id = $created_id LIMIT 1")) 
     echo "Error"; 
    $row = $result->fetch_object(); 
    $P_id = $created_id; 

    if (!$result_clonepart = $mysqli->query("SELECT * FROM partlist WHERE K_pid = $old_P_id")) 
    { 
     echo "Error"; 
    } 
    else 
    { 
     if ($result_clonepart->num_rows > 0) 
     { 
      while ($row_clonepart = $result_clonepart->fetch_object()) 
      { 
       if (!$result_clonepart = $mysqli->query("INSERT INTO partlist (K_ref ,K_pid ,K_iid ,K_qty ,K_subpid, K_stat) VALUES (\"".$row_clonepart->K_ref  ."\" ,\"". $P_id ."\" ,\"".$row_clonepart->K_iid  ."\" ,\"".$row_clonepart->K_qty  ."\" ,\"".$row_clonepart->K_subpid ."\" ,\"".$row_clonepart->K_stat  ."\")")) 
        echo "Error"; 
      } 


     } 
    } 
} 

Линия 136:

while ($row_clonepart = $result_clonepart->fetch_object()) 

Как может $ result_clonepart не является объектом, если проверка num_rows хороша?

+0

Что вы получите, если вы печатаете ' $ result_clonepart' после выполнения? 'die (var_dump ($ result_clonepart));' –

+0

объект (mysqli_result) # 3 (5) {["current_field"] => int (0) ["field_count"] => int (8) ["lengths"] = > NULL ["num_rows"] => int (1) ["type"] => int (0)} – SimoneApprendista

+2

Это выглядит ужасно неуверенно. Вы уверены, что ** ваши пользовательские параметры [правильно экранированы] (http://bobby-tables.com/php)? При использовании 'mysqli' вы должны использовать параметризованные запросы и [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ используйте ** конкатенацию строк, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). – tadman

ответ

0

В вашем цикле while вы переназначаете $result_clonepart (что вы, вероятно, не хотите делать). Если этот запрос завершится неудачно, ваш скрипт остановится с фатальной ошибкой.

Используйте другое имя переменной (если вы не хотите использовать то же имя переменной) или разорвать петлю на провал (если вы переназначение намеренно)

while ($row_clonepart = $result_clonepart->fetch_object()) { 
    //  VVVVVVVVVVV  Here is the reassignment 
    if (!$result_clonepart = $mysqli->query("INSERT INTO partlist (K_ref ,K_pid ,K_iid ,K_qty ,K_subpid, K_stat) VALUES (\"".$row_clonepart->K_ref  ."\" ,\"". $P_id ."\" ,\"".$row_clonepart->K_iid  ."\" ,\"".$row_clonepart->K_qty  ."\" ,\"".$row_clonepart->K_subpid ."\" ,\"".$row_clonepart->K_stat  ."\")")) 
     echo "Error"; 
     //You could insert a break statement if you are reassigning the variable intentionally 
} 
+0

Я не хотел переназначать его вообще ... большое спасибо !!! – SimoneApprendista

Смежные вопросы