2016-05-25 3 views
1

Я потерял с этой ошибкой:Catchable фатальная ошибка Объект класса DOMDocument не может быть преобразован в строку

Catchable fatal error Object of class DOMDocument could not be converted to string

Это мой PHP код:

<?php 
require_once('includes/mysqlConnect.php'); 
require_once('includes/utility.php'); 

//calling utility 
$utility = new Utility(); 

//Creating a connection 
$connection= new mySQL(); 
$connection->connect(); 

$getContent= file_get_contents('http://www.example.com/'); 
//echo $getContent; 

//create a new DOMDocument Object 
$doc= new DOMDocument(); 

//load HTML into DOMDoc 
libxml_use_internal_errors(true); 
$doc->loadHTML($getContent); 
$utility->removeElementsByTagName('script', $doc); 
$utility->removeElementsByTagName('style', $doc); 
$utility->removeElementsByTagName('link', $doc); 
echo $doc->saveHTML(); 

//Insert HTMl to DB 
try 
{ 
     $result=$connection->db_query("CALL finalaggregator.insert_html('$doc')"); 
     if ($result==0){ 
      echo "<span style='color:red;'>Error! Data Saving Processes Unsuccessful</span>"; 
     } 
     else { 
      echo "<span style='color:green;'>Data Successfully Saved!</span>"; 
     } 
} 
catch (Exception $e){ 
    echo "<span color='color:red;'>Error in Storing Data! Please Check Store Procedure.</span>"; 
} 


?> 

Но всегда в конечном итоге с показом

DOM Document could not be converted to string on line 29

Я хочу сохранить значение $ doc в базу данных.

Когда я пытаюсь вызвать хранимую процедуру из Mysql:

call finalaggregator.insert_html("<p>Testing123</p>"); 

он работает нормально.

Пожалуйста, помогите мне. Я новичок в php.

Моя хранимая процедура выглядит следующим образом:

CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_html`(IN HTML LONGTEXT) 
BEGIN 
    INSERT INTO finalaggregator.site_html (html) VALUES(HTML); 
END 

ответ

0

Вы не можете просто использовать экземпляр DOMDocument в виде строки в запросе. Вы должны явно преобразовать его в строку HTML сначала:

$html = $doc->saveHTML(); 
$result = $connection->db_query("CALL finalaggregator.insert_html('$html')"); 
+0

он не показывает исходную ошибку, но переходит в «Ошибка! Процессы сохранения данных не увенчались успехом». Могу я узнать почему? – Achilles

+0

используйте error_reporting(), чтобы узнать, что это за ошибка, и показывает «22527». Могу ли я знать, как это решить? – Achilles

+0

Значение '22527', возвращаемое из' error_reporting() ', является BitMask, представляющим уровень сообщений об ошибках. В этом случае он представляет 'E_ALL & ~ E_DEPRECATED', поэтому все ошибки отображаются execpt для' E_DEPRECATED' и 'E_STRICT' (которые не включены в' E_ALL'). – Timo

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

  • Нет связанных вопросов^_^