Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,
Boa tarde, estou fazendo o seguinte insert lendo um arquivo TXT:
if ($arq_cop = '001' && $arq_cop = '004'){
$HoraMot = $arq_datajc." ".$arq_horac;
$HoraCob = $arq_datajc." ".$arq_horac;
$sql = "INSERT INTO guiasponto_copy VALUES (NULL,NULL,";
$sql.="'$arq_datajc', '$HoraMot','$HoraMot',";
}
else if ($arq_cop = '002' && $arq_cop = '005'){
$HoraMot = $arq_datajc." ".$arq_horac;
$HoraCob = $arq_datajc." ".$arq_horac;
$sql.="'$HoraCob','$HoraCob')";
}
$res = mysql_query($sql) or die(mysql_error());
if (!$res) {
echo "Nao foi possivel gravar os dados";
} else {
echo "dados gravados com sucesso";
}
Porém está retornando o seguinte erro, já coloquei (") e (') mas o erro continua...
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Andrey,
mesmo erro.....
eu editei o post .. não deu nada no var_dump ?
Nada, só o mesmo erro do mysql segue o codigo completo...
mysql_connect("localhost", "", "") or die(mysql_error());
mysql_select_db("guias_bigps_dbo") or die(mysql_error());
$dir = "ArquivosV3LAN";
if($handle = opendir($dir))
{
while($file = readdir($handle)){
clearstatcache();
if(is_file($dir.'/'.$file)){
echo $file."<br>";
$abre = fopen($dir.'/'.$file, "r");
while (!feof ($abre)) { //Lت UMA LINHA DO ARQUIVO
$arq = fgets($abre, 4096);
$arq = str_replace(PHP_EOL, '', $arq);
$data_j = strtotime('2002-12-31');
$arq_tam = strlen($arq);
$arq_tipo = substr($arq,0,3);
$arq_ver = substr($arq,3,3);
$arq_dataj = substr($arq,6,5);
$arq_hora = substr($arq,11,5);
$arq_datajc = date('d/m/Y',strtotime('+'.$arq_dataj.'days',strtotime('2002-12-31')));
$arq_horac = gmdate("H:i:s",$arq_hora);
// VERIFICA O TIPO DO REGISTRO 010
if ($arq_tipo == "010") {
$data_j = strtotime('2002-12-31');
$arq_tam = strlen($arq);
$arq_tipo = substr($arq,0,3); // Tipo Arquivo
$arq_ver = substr($arq,3,3); // Versمo Arquivo
$arq_fco = substr($arq,6,3); // Funçao do Operador
$arq_emp = substr($arq,9,3); // Empresa Motorista
$arq_cdp = substr($arq,12,10); // C?digo prodata do operador
$arq_mop = substr($arq,22,10); // Matr?cula do operador
$arq_car = substr($arq,32,10); // Numero Onibus
$arq_dataj = substr($arq,42,5); // Data Juliana
$arq_hora = substr($arq,47,5); // Hora
$arq_cop = substr($arq,52,3); // Codigo Operacao
$arq_sts = substr($arq,55,1); // Status
$arq_ass = substr($arq,56,4); // Assinatura do Registro
$arq_datajc = date('Y-m-d',strtotime('+'.$arq_dataj.'days',strtotime('2002-12-31')));
$arq_horac = gmdate("H:i:s",$arq_hora);
if ($arq_cop = '001' && $arq_cop = '004'){
$HoraMot = $arq_datajc."".$arq_horac;
$HoraCob = $arq_datajc." ".$arq_horac;
$sql = "INSERT INTO `guiasponto_copy` VALUES (NULL,NULL,";
$sql.="'".$arq_datajc."', '".$HoraMot."','".$HoraMot."',";
}
elseif( $arq_cop = '002' && $arq_cop = '005' ) {
$HoraMot = $arq_datajc." ".$arq_horac;
$HoraCob = $arq_datajc." ".$arq_horac;
$sql.="'".$HoraCob."','".$HoraCob."')";
}
$res = mysql_query($sql) or die(mysql_error());
var_dump ( $res ) ;
if ( !$res ) {
echo "Nao foi possivel gravar os dados";
} else {
echo "dados gravados com sucesso";
}
}
}
}
fclose ($abre);
}
closedir($handle);
}Post editado novamente , execute e poste o retorno
Erro:
TG002_48001_13547_01922_002_20110219004501_08.94.txt
INSERT INTO guiasponto_copy VALUES (NULL,NULL,'2011-02-18', '2011-02-18 06:04:49','2011-02-18 06:04:49'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
ta ai seu erro , olha o sql que ele volto no echo.. 'data' , falta um parenteses não ?
Andrey,
Valeu pela ajuda...
Código corrigido, coloquei o $sql dento do primeiro if... então ele não entrava no else if para completar o insert, assim funcionou:
$sql = "INSERT INTO `guiasponto_copy` VALUES (NULL,NULL,";
if ($arq_cop = '001' && $arq_cop = '004'){
$HoraMot = $arq_datajc." ".$arq_horac;
$HoraCob = $arq_datajc." ".$arq_horac;
$sql.="'".$arq_datajc."', '".$HoraMot."','".$HoraMot."'";
}
if( $arq_cop = '002' && $arq_cop = '005' ){
$HoraMot = $arq_datajc." ".$arq_horac;
$HoraCob = $arq_datajc." ".$arq_horac;
$sql.=",'".$HoraCob."','".$HoraCob."')";
}
echo ( $sql );
$res = mysql_query($sql) or die(mysql_error());
if (!$res) {
echo "Nao foi possivel gravar os dados";
} else {
echo "dados gravados com sucesso";
}beleza . so uma dica .. quando der erro de syntaxe em query , debuga ela com var_dump , ou posta um echo da saida pra agilizar pra gente ..
abraços
Andrey,
o Insert está sanido errado tenho que ler essas linhas:
010001002002000020940500000186260000048001029712188900100000
010001002002000020940500000186260000048001029712189800200000
010001002002000020940500000186260000048001029714805500500000
010001002002000020940500000186260000048001029714808300400000
A Tabela:
Id, Data, Motv, CobV, MotD, CobD
Mas preciso fazer o insert lendo linha a linha:
010001002002000020940500000186260000048001029712188900100000 => Vinculacao Motorista
010001002002000020940500000186260000048001029712189800200000 => Vinculacao Cobrador
010001002002000020940500000186260000048001029714805500500000 => Desvinculo Cobrador
010001002002000020940500000186260000048001029714808300400000 => Desvinculo Motorista
Preciso ler essas 4 linhas e fazer um insert e no meu insert está fazendo 4 insert´s diferentes...
Tem como ?
Tente assim
poste o resultado