Разбор PHP DOM и MySQL Ошибка - PullRequest
0 голосов
/ 17 января 2012

Я имею в виду ответ на мой вопрос, ответ предоставлен @abhy, сработало, ссылка Ошибка разбора php proDOM

Я продолжаю работать над этим и хочу сохранить извлеченные данные в базу данных MySQL ...

код, который я использую:

 ?php
$ch = curl_init(); // create a new cURL resource
$word = 'books';
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://images.google.com/images?q=".$word."s&tbm=isch/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$data = curl_exec($ch); // grab URL and pass it to the browser
curl_close($ch); 

$dom = new DOMDocument();
@$dom->loadHTML($data); // avoid warnings

$listA = $dom->getElementsByTagName('a'); // read all <a> elements
foreach ($listA as $itemA) { // loop through each <a> element
    if ($itemA->hasAttribute('href')) { // check if it has an 'href' attribute
        $href = $itemA->getAttribute('href'); // read the value of 'href'
        if (preg_match('/^\/imgres\?/', $href)) { // check that 'href' should begin with "/imgres?"
            $qryString = substr($href, strpos($href, '?') + 1);
            parse_str($qryString, $arrHref); // read the query parameters from 'href' URI
        echo '<br>' . $arrHref['imgurl'] . '<br>';
    $sql = "INSERT INTO `p_url_imgsrch`(`id`, `word_id`, `url_imgsrch`) VALUES ('','8','$arrHref['imgurl']')";

    mysql_query($sql) or die("error in updating urls") ;

        }
    }
}


?>

идея в том, что я вставлю каждую ссылку в базу данных, извлеченную из парсинга, я уверен, что с моим соединением все в порядке, та же строка запроса mysql с фиктивными данными работает в mysql и успешно вставляет данные. Однако я использую фиктивный URL вместо '$arrHref['imgurl']' ..

ошибка, которую я получаю

Ошибка разбора: синтаксическая ошибка, неожиданный T_ENCAPSED_AND_WHITESPACE, ожидая T_STRING или T_VARIABLE или T_NUM_STRING в D: \ wamp \ www \ demo \ login \ abhay.php в строке 24

abhay.php - файл, содержащий этот код, также при попытке решить проблему иногда возникала ошибка типа T_STRING ...

где я делаю ошибку? пожалуйста, дайте мне руководство ..

спасибо

Ответы [ 2 ]

1 голос
/ 17 января 2012

Вы можете использовать "{$arrHref['imgurl']}", чтобы php знал, что это переменная и вам не следует вставлять id, если вы хотите, чтобы он был автоматически увеличен:

$sql = "INSERT INTO `p_url_imgsrch`(`word_id`, `url_imgsrch`) VALUES ('8','{$arrHref['imgurl']}')"; 

Однако это может привести к повреждению команды sql, как только $ arrHref ['imgurl'] содержит одну кавычку.

Так что лучшим решением было бы использовать mysql_real_escape_string:

$imgurl = mysql_real_escape_string($arrHref['imgurl']);

$sql = "INSERT INTO `p_url_imgsrch`(`word_id`, `url_imgsrch`) VALUES ('8','{$imgurl}')"; 
0 голосов
/ 17 января 2012
$sql = "INSERT INTO `p_url_imgsrch`(`id`, `word_id`, `url_imgsrch`) VALUES ('','8','$arrHref[imgurl]')";

Имейте в виду, что это может привести к повреждению кода, внедряемого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...