使用Simple Dom Parser将cURL数据插入mysql时遇到问题

时间:2013-10-02 03:59:00

标签: php html mysql json simple-html-dom

您好我正在尝试解决如何将数据保存到mysql。 它不会在数据库中插入任何内容。我认为这是因为我传递的数据格式不正确?我需要通过json发布这个吗?

    <head>
<link rel="stylesheet" href="styles.css" type="text/css">
</head>
<?php

    //echo phpinfo();

    //include the php class to get the div content
    include_once('simple_html_dom.php');//http:
    include_once('dbconn.php');

    //the name of the curl function
    function curl_get_contents($url){

    //Initiate the curl
    $ch=curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    //removes the header of the webpage
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //do not display the whole page
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //execute the curl
    $output = curl_exec($ch);
    //close the curl so that resources are not wasted
    //curl_close($ch);
    return $output;

    ini_set('max_execution_time', 3000); //300 seconds = 5 minutes
        }   




    $output = curl_get_contents('http://www.lockweb.com.au/en/site/lockweb/Products/?  groupId=469&productId=135');

    // Get the complete html from  the address

    $html = str_get_html($output);

    //get the title
        $title = $html->find('div.content-wide[id=content]', 0);
    $description = $html->find('div[class="tab-content content-wide selected"]',0);
    $spec = $html->find('div[class="tab-content content-wide"]',0);
    $moreinfo = $html->find('div[id=downloadsitem]',0);
    $image = $html->find('div.product-presentation',0);



    $echoHTML = "<table border=1 align=center>";
        $echoHTML .="<tr>";
        /* adding rows header to table */
                $echoHTML .="<th>Title</th>";
                $echoHTML .="<th>Description</th>";
                $echoHTML .="<th>Specifications</th>";
                $echoHTML .="<th>MoreInfo</th>";
                $echoHTML .="<th>Image/s</th>";
        $echoHTML .="</tr>";
        $echoHTML .="<tr>";
                $echoHTML .="<td>".$title->plaintext."</td>";
                $echoHTML .="<td>".$description->plaintext."</td>";
                $echoHTML .="<td>".$spec."</td>";
                $echoHTML .="<td>".$moreinfo."</td>";
                $echoHTML .="<td>".$image."</td>";

        /* end of table */
        $echoHTML .= "</table>";

        echo $echoHTML;
         //trying to insert the data into the database
           $q=  ("INSERT INTO  `lockwood`.`products` (
            `Title` ,
            `Descr` ,
            `Spec` ,
            `more info` ,
            `image` ,
            `id`
            )
            VALUES (
            '$title',  'teat',  'test',  'test',  'test', NULL"
            );

?>

1 个答案:

答案 0 :(得分:0)

您正在废弃数据并正确生成表格...

正如您所说,当您尝试将html代码插入数据库时​​会发生问题......

此代码必须使用mysql_real_escape_string()

进行转义
$q=  sprintf(("INSERT INTO  `lockwood`.`products` (
        `Title` ,
        `Descr` ,
        `Spec` ,
        `more info` ,
        `image` ,
        `id`
        )
        VALUES (
        '%s',  'teat',  'test',  'test',  'test', NULL"
        ), mysql_real_escape_string($title));

OR

$q=  ("INSERT INTO  `lockwood`.`products` (
        `Title` ,
        `Descr` ,
        `Spec` ,
        `more info` ,
        `image` ,
        `id`
        )
        VALUES (
        ' {mysql_real_escape_string($title)} ',  'teat',  'test',  'test',  'test', NULL"
        );

很遗憾,此功能已弃用,将来会被删除...因此,根据您的需要,使用mysqli_real_escape_string()PDO::quote()