2015-06-27 5 views
3

У меня есть этот код для множественного запроса на вставку (мне нужно перенести данные с db на другой и внести некоторое обновление, поэтому я хочу использовать код, который мог бы сделать все это автоматически)PHP MySql PDO Множественная вставка не работает

$query = "select * from pubblicate order by idPubblicate asc"; 

$dbh = newPdo2(); 
$dbh->exec("set names utf8"); 

$sth = $dbh->prepare($query); 
$sth->execute(); 

$count = 0; 
$query2 = "insert into published_offer 
      (codice_onshop,nome,inbreve,anteprima, 
      galleria1,galleria2,galleria3,galleria4,prezzo, 
      tp_prezzo,bonus_usabile,proposta,condizioni, 
      prenotare,categoria,description,keywords, 
      valido_da,valido_a) "; 

while($offerta = $sth->fetch(PDO::FETCH_ASSOC)) { 
    $array[$count]['id'] = $offerta['idPubblicate']; 
    $array[$count]['co'] = $offerta['codiceOfferta']; 
    $array[$count]['no'] = $offerta['nomeOfferta']; 
    $array[$count]['ib'] = $offerta['inBreve']; 
    $array[$count]['ke'] = $offerta['keywords']; 
    $array[$count]['de'] = $offerta['description']; 
    $array[$count]['pr'] = $pfferta['prezzo']; 
    $array[$count]['pe'] = $offerta['persona']; 
    $array[$count]['da'] = $offerta['daTimer']; 
    $array[$count]['a'] = $offerta['aTimer']; 
    $array[$count]['an'] = $offerta['anteprima']; 
    $array[$count]['g1'] = $offerta['galleria1']; 
    $array[$count]['g2'] = $offerta['galleria2']; 
    $array[$count]['g3'] = $offerta['galleria3']; 
    $array[$count]['g4'] = $offerta['galleria4']; 
    $array[$count]['pro'] = $offerta['proposta']; 
    $array[$count]['con'] = $offerta['condizioni']; 
    $array[$count]['pre'] = $offerta['prenotare']; 
    $array[$count]['bo'] = 999; 

    if($offerta['italia']=="Sì")  $array[$count]['ca'] = "ita"; 
    else if($offerta['europa']=="Sì") $array[$count]['ca'] = "eur"; 
    else if($offerta['mondo']=="Sì") $array[$count]['ca'] = "mon"; 
    $count++; 
} 

$query2 .= "values (:co,:no,:ib,:an,:g1,:g2, 
        :g3,:g4,:pr,:pe,:bo,:pro,:con, 
        :pre,:ca,:de,:ke,:da,:a)"; 

$dbh = newPdo(); 
$dbh->exec("set names utf8"); 
$sth = $dbh->prepare($query2); 

$i=0; 
echo $array[0]['no'] . " " . count($array) . " " . $array[125]['no'] . "<br>" . $query2 . "<br>"; 

while($i<count($array)) { 
    $sth->bindParam(":co", $array[$i]['co']); 
    $sth->bindParam(":no", $array[$i]['no']); 
    $sth->bindParam(":ib", $array[$i]['ib']); 
    $sth->bindParam(":an", $array[$i]['an']); 
    $sth->bindParam(":g1", $array[$i]['g1']); 
    $sth->bindParam(":g2", $array[$i]['g2']); 
    $sth->bindParam(":g3", $array[$i]['g3']); 
    $sth->bindParam(":g4", $array[$i]['g4']); 
    $sth->bindParam(":pr", $array[$i]['pr']); 
    $sth->bindParam(":pe", $array[$i]['pe']); 
    $sth->bindParam(":bo", $array[$i]['bo']); 
    $sth->bindParam(":pro",$array[$i]['pro']); 
    $sth->bindParam(":con",$array[$i]['con']); 
    $sth->bindParam(":pre",$array[$i]['pre']); 
    $sth->bindParam(":ca", $array[$i]['ca']); 
    $sth->bindParam(":de", $array[$i]['de']); 
    $sth->bindParam(":ke", $array[$i]['ke']); 
    $sth->bindParam(":da", $array[$i]['da']); 
    $sth->bindParam(":a", $array[$i]['a']); 

    $sth->execute(); 
    $i++; 
} 

Но этот код не работает. Я также пытался использовать try-catch(PDOException) для $sth->execute(), но он ничего мне не показывает.

Почему?

Кто сказал, что «этот вопрос дублируется», на самом деле не читается вопрос. Infact ошибка была неправильным символом: $array[$count]['pr'] = $pfferta['prezzo'] было бы $array[$count]['pr'] = $offerta['prezzo'], поэтому я не мог найти ответ в другом вопросе.

+0

Это же или разные '$ ДВГ = newPdo2();' и '$ ДВГ = newPdo();' в коде ?? ? – Saty

+0

разные, потому что они находятся в 2 разных разрядах. Db – ProtoTyPus

+2

У вас нет ОБРАБОТКИ ОШИБОК. Добавьте некоторые, и вы можете ответить на свой вопрос – RiggsFolly

ответ

-1

Попробуйте добавить некоторые простые проверки, что все на самом деле работали как этот

$res = $sth->execute(); 
if (! $res) { 
    echo sprintf('ERROR: %d - %s', $sth->errorCode(), $sth->errorInfo()); 
} 
Смежные вопросы