0

私はフォルダーからすべてのxmlファイルを赤くするxmlパーサーを構築しており、テーマを解析した後、mysqlテーブルにデータを保存する必要があります。結局、次のエラーが表示されます。何が間違っているのか、どのようにデバッグすればよいのかわかりません。

Warning: mysqli::prepare(): Couldn't fetch mysqli in E:\xampp\htdocs\XML_Parser\index.php on line 38

私のコード

class XMLFeeds{

    public $obj;

    protected $db_connect;

    function __construct(){     
        // Read feeds and pass it to parser
        $this->db_connect = @new mysqli('loalhost', 'root', '', 'test');
        foreach(glob("feeds/*xml") as $filename) {
            $obj = $this->parsing_feed(file_get_contents($filename, FILE_TEXT) );
            $this->saveFeed($obj);
        }   
    }

    function parsing_feed($feed){       
        return simplexml_load_string($feed);        
    }   

    function saveFeed($obj){
        foreach ($obj as $row){

                $stmt = $this->db_connect->prepare("INSERT INTO tbl 
                        ( id,
                          prod_name,
                          category,
                          description,
                          image_url,
                          keywords,
                          sku,
                          target_url,
                          price,
                          warranty,
                          shipping_costs,
                          impressionurl,
                          lastupdated ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

                if ($stmt === FALSE) {
                    die($mysqli->error);
                }

                $stmt -> bind_param("ssi",
                         $row->name,
                         $row->advertisercategory,
                         $row->description,
                         $row->imageurl,
                         $row->keywords,
                         $row->sku,
                         $row->buyurl,
                         $row->price,
                         $row->standardshippingcostm,
                         $row->impressionurl,
                         $row->lastupdated );
                $stmt ->execute();
        }
    }
}

$parse = new XMLFeeds();
4

1 に答える 1

1

これは、localhost のスペルが間違っているため、データベースとの接続が正常に確立されないために発生しました。@new を使用して mysqli クラスをインスタンス化する際のエラーを省略しています。

@ を削除して、例外を介して接続が確立されていないかどうかを確認してください。それ以外の場合は、コードの実行が続行されます。

    <?php
    $this->db_connect = new mysqli('localhost', 'root', '', 'zanox');
    if($this->db_connect->connect_error){
       throw new Exception('unable to connect, '. $this->db_connect->connect_error);
    }
于 2013-02-13T21:40:05.750 に答える