2013-05-16 129 views
-2

我想獲取一些數據形成一個Firebird數據庫,並將其放入MySql數據庫使用PHP。 我的問題是,我的SELECT有3847行,代碼只是INSERT 981行! 這是我的代碼,我脫掉了連接和其他一些東西寫在這裏,因爲一切都是正確的...感謝您的幫助!從Firebird數據庫中選擇插入到MySQL數據庫使用PHP

$res=ibase_query($conexao, 
"select 
p.id_processo as ID , 
p.alteravel1 as PLACA, 
p.titproc as TITPROC, 
p.data_inicio as RECEPCIONADO, 
p.dt_atu_geral as GERAL, 
p.numproc as N_PROCESSO, 
p.id_cli, 
p.id_adv, 
p.id_fase, 
p.vara as VARA, 
fo.nm_foro as FORO, 
cd.nm_cidade as CIDADE, 
uf.nm_estado as ESTADO 
from processo p 
left join pessoa pss on p.id_adv = pss.id_pessoa 
left join foro fo on p.id_foro = fo.id_foro 
left join cidade cd on fo.id_cidade = cd.id_cidade 
left join estado uf on cd.id_estado = uf.id_estado 
where pss.nome <> 'JORGE LUIS CONFORTO' and 
p.status = '0'" 
); 
$sql="create table if not exists processo1 (
id int(40) not null primary key, 
placa varchar(100), 
titproc varchar(100), 
data_recepcionado datetime, 
data_atual datetime, 
n_processo varchar(100), 
id_cli int(40), 
id_adv int(40), 
id_fase int(40), 
vara int(40), 
foro varchar(100), 
cidade varchar(100), 
estado varchar(100) 
)"; 

mysqli_query($conexao1, $sql); 

while ($escrever=ibase_fetch_assoc($res)){ 
$id = $escrever['ID']; 
$placa = $escrever['PLACA']; 
$titproc = $escrever['TITPROC']; 
$dtin = $escrever['RECEPCIONADO']; 
$dtatu = $escrever['GERAL']; 
$nproc = $escrever['N_PROCESSO']; 
$cli = $escrever['ID_CLI']; 
$adv = $escrever['ID_ADV']; 
$fase = $escrever['ID_FASE']; 
$vara = $escrever['VARA']; 
$foro = $escrever['FORO']; 
$cidade = $escrever['CIDADE']; 
$estado = $escrever['ESTADO']; 

$query = "insert into processo1 (
id, 
placa, 
titproc, 
data_recepcionado, 
data_atual, 
n_processo, 
id_cli, 
id_adv, 
id_fase, 
vara, 
foro, 
cidade, 
estado) 
values (
'$id', 
'$placa', 
'$titproc', 
'$dtin', 
'$dtatu', 
'$nproc', 
'$cli', 
'$adv', 
'$fase', 
'$vara', 
'$foro', 
'$cidade', 
'$estado' 
)"; 

mysqli_query($conexao1, $query); 
} 
+1

[mysqli_error()](http://uk.php.net/manual/en/mysqli.error.php)是你的朋友,它告訴你問題是什麼? – Anigel

+0

難道是你用完內存或者你會被超時? – shadyyx

+0

這不是內存或超時。我將select改爲SELECT TOP 50,INSERT返回10行! – user2390397

回答

0

運行每個查詢後應該始終檢查錯誤。

您的插入很可能因爲某些原因失敗。確切的原因可能是任何事情,但如果至少以這種方式,你應該被通知任何失敗的插入失敗。

if (!$mysqli_query($query)) { 
    printf("Error: %s\n", $mysqli_error()); 
} 
+0

謝謝Anigel的幫助! 問題是它不打印任何錯誤信息,好像一切正​​常... – user2390397

+0

您是否顯示錯誤並檢查了服務器錯誤日誌?聽起來你可能會在所有插入完成之前被終止。這通常是由於超出最大執行時間或允許的內存。 – Anigel

+0

是啊!我認爲這是超過最大內存,因爲我改變了所有的最大時間,我可以在php.ini ...再次Thaks – user2390397