2015-07-04 5 views
0

Я создал цикл foreach для добавления данных в базу данных MySQL, и я получаю сообщение об ошибке «mysqli :: query(): Couldn ' t fetch mysqli "после того, как первая строка была добавлена ​​в базу данных.mysqli :: query(): Не удалось получить mysqli после первой строки цикла foreach

PHP DB СОЕДИНЕНИЕ

$db = new mysqli($db_hostname, $db_username, $db_password, $db_database); 
if ($db->connect_error) { 
    die("Connection failed: " . $db->connect_error); 
} 

Я тогда еще один кусок скрипта, который собирает данные, которые мне нужны. Данные затем добавляют к петле Еогеасп вставки

РНР FOREACH

foreach($RSS_DOC->channel->item as $RSSitem) 
{ 

    $item_id = md5($RSSitem->title); 
    $fetch_date = date("Y-m-j G:i:s"); 
    $item_title = $RSSitem->title; 
    $item_date = date("Y-m-j G:i:s", strtotime($RSSitem->pubDate)); 
    $item_url = $RSSitem->link; 

    echo "Processing item '" , $item_id , "' on " , $fetch_date  , "<br/>"; 
    echo $item_title, " - "; 
    echo $item_date, "<br/>"; 
    echo $item_url, "<br/>"; 

    $sql = "INSERT INTO rssingest (item_id, feed_url, item_title, item_date, item_url, fetch_date) 
    VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_url . "', '" . $fetch_date . "')"; 

    if ($db->query($sql) === TRUE) { // <- THIS IS LINE 170 
     echo "New record created successfully"; 
    } else { 
    echo "Error: " . $sql . "<br>" . $db->error; 
    } 

    $db->close(); 

} 

Первая строка добавляется к базе данных без проблем. Вторая строка и каждая строка после нее возвращают «mysqli :: query(): Не удалось получить mysqli в строке 170».

Любые идеи, в которых я могу ошибаться?

+1

Вы закрываете соединение с базой данных внутри своей петли. Переместите '$ db-> close()' вне вашего цикла. –

ответ

1

Проблема может быть в $db->close() внутри цикла. Попробуйте закрыть базу данных после цикла.

foreach($RSS_DOC->channel->item as $RSSitem) 
{ 

    $item_id = md5($RSSitem->title); 
    $fetch_date = date("Y-m-j G:i:s"); 
    $item_title = $RSSitem->title; 
    $item_date = date("Y-m-j G:i:s", strtotime($RSSitem->pubDate)); 
    $item_url = $RSSitem->link; 

    echo "Processing item '" , $item_id , "' on " , $fetch_date  , "<br/>"; 
    echo $item_title, " - "; 
    echo $item_date, "<br/>"; 
    echo $item_url, "<br/>"; 

    $sql = "INSERT INTO rssingest (item_id, feed_url, item_title, item_date, item_url, fetch_date) 
    VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_url . "', '" . $fetch_date . "')"; 

    if ($db->query($sql) === TRUE) { 
     echo "New record created successfully"; 
    } else { 
    echo "Error: " . $sql . "<br>" . $db->error; 
    } 



} 
$db->close(); 
+0

Спасибо, что решила проблему. Я думал, что я уже пробовал это и имел синтаксическую ошибку, но я, должно быть, поставил ее не в том месте. Поздняя ночь и слишком много кофе! – Syn

+0

@ Синь у всех нас есть те дни. Рад, что смог помочь. – bnahin

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