2013-05-16 90 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