2015-11-20 4 views
0

Эта часть предназначена для сбора моих данных через API.Вставить несколько результатов в базу данных PHP

foreach($result['List'] as $feedback) 
{ 
    $date = date_create(); 
    $date_entered = $feedback['DateEntered']; 
    $time = preg_replace('/[^0-9]/','',$date_entered); 
    //$comment = $feedback['Text']; 
    $ListingId = $feedback['ListingId']; 
    $BuyNowPrice = $feedback['BuyNowPrice']; 
    $max_bid = $feedback['MaximumBidAmount']; 
    $SellerId = $feedback['SellerId']; 
    echo '<div>' . "Seller ID: $SellerId" . " has sold one $ListingId for " . '$' . "$BuyNowPrice" . '</div>'; 
    echo "<div>Feedback created at " . $time . "</div>"; 
    echo '<br>'; 
} 

Эта часть - это код, который я использовал для ввода в мои результаты непосредственно после их извлечения.

  <?php 

    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = 'password'; 
    $conn = mysql_connect($dbhost, $dbuser, $dbpass); 

    if(! $conn) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 

    $sql = 'INSERT INTO tmfeedback '. 
     '(SellerId,ListingId,BuyNowPrice) '. 
     'VALUES ('.$SellerId.', '.$ListingId.', '.$BuyNowPrice.'))'; 

    mysql_select_db('dctdb3'); 
    $retval = mysql_query($sql, $conn); 

    if(! $retval) 
    { 
     die('Could not enter data: ' . mysql_error()); 
    } 

    echo "Entered data successfully\n"; 

    mysql_close($conn); 


      ?> 

В базу данных вставляется только одна информация, и это последние данные. Мне было интересно, как я могу изменить свой код, чтобы я мог вставлять все данные одновременно и не повторяться? Благодарим вас за помощь.

+2

Вы выполняете только инструкцию 'INSERT'. Может быть, вы хотите провести «INSERT» в цикле, точно так же, как вы отображаете данные в цикле? – David

+0

Вставьте код вставки в строку 'foreach' вверху. – Barmar

+0

@David Не могли бы вы показать мне пример того, как это можно сделать? Благодарю. –

ответ

0

Вставьте вставку внутри петли. В противном случае переменные имеют только последние значения, которые были установлены в последней итерации цикла.

<?php 

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = 'password'; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 

if(! $conn) { 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db('dctdb3'); 

foreach($result['List'] as $feedback) { 
    $date = date_create(); 
    $date_entered = $feedback['DateEntered']; 
    $time = preg_replace('/[^0-9]/','',$date_entered); 
    //$comment = $feedback['Text']; 
    $ListingId = $feedback['ListingId']; 
    $BuyNowPrice = $feedback['BuyNowPrice']; 
    $max_bid = $feedback['MaximumBidAmount']; 
    $SellerId = $feedback['SellerId']; 
    echo '<div>' . "Seller ID: $SellerId" . " has sold one $ListingId for " . '$' . "$BuyNowPrice" . '</div>'; 
    echo "<div>Feedback created at " . $time . "</div>"; 
    echo '<br>'; 

    $sql = 'INSERT INTO tmfeedback '. 
     '(SellerId,ListingId,BuyNowPrice) '. 
     'VALUES ('.$SellerId.', '.$ListingId.', '.$BuyNowPrice.'))'; 
    $retval = mysql_query($sql); 
    if(! $retval) { 
     die('Could not enter data: ' . mysql_error()); 
    } 

} 

echo "Entered data successfully<br>"; 
mysql_close($conn); 
0

Убедитесь, что ваш второй блок кода находится внутри вашего первого блока кода (поместите второй блок над правой фигурной скобкой). Затем это произойдет для каждой итерации цикла foreach (каждый результат) и вставьте запись для каждого из них.

0

Вы не можете вставлять массив в базу данных, поэтому размещайте запрос внутри цикла. Это thread может вам помочь.

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