Buenas Tardes! Les comento mi problema:
Yo tengo un archivo csv con cierta cantidad de datos, lo que hago es abrir dicho archivo y modificar unos campos que estan mal cargados (Telefonos con espacios, guiones, etc..) y luego los tengo que cargar en mi base de datos de postgress:
Código PHP:
#!/usr/bin/php
<?php
// Me conecto al pgsql
$conectarse = pg_connect(******);
// Reviso si la conexion fue exitosa sino devuelvo un error
if (!$conectarse) {die("Error de Conexion!: " . pg_last_error());}
// --- FUNCIONES --- ///
// Reemplaza los guiones bajo por espacios.
function sacar_guiones($var){
$reemplazo=str_replace("_", " ", $var);
return $reemplazo;
}
// Toma todo el string y solo deja los numeros y en caso de que no devuelva nada (devuelve 0 si no hay numeros) lo reemplaza por nada.
function telefono($numero) {
$r = intval(preg_replace('/[^0-9]+/', '', $numero), 10);
if($r == 0){$r = "";}
return $r;
}
// --- FIN FUNCIONES --- ///
// --- PROGRAMA PRINCIPAL --- ///
// Ignora las advertencias de PHP
error_reporting(0);
// Abro el archivo CSV en modo lectura
$file = fopen('datos-ejemplo.csv', 'r');
// Creo una bandera que utilizo para ignorar la primer vuelta asi no me guarda los cabezales
$band = 0;
// Recorro el archivo
while (($line = fgetcsv($file)) !== FALSE) {
// Consulto si es el primer ingreso, para evitar leer las cabeceras, si lo es cambio la bandera a 1
if($band != 0 )
{
// Almaceno los datos recolectados
$RAZON=$line[14];
$LOCALIDAD=$line[16];
$EMAIL=$line[15];
$FECHADEREGISTRO=$line[1];
$TELEFONO1=telefono($line[12]);
$TELEFONO2=telefono($line[13]);
// Genero la consulta SQL
$query = "INSERT INTO tabla_datos (razon) VALUES ('" .$RAZON. "')";
// Ejecuto la consulta
$result = pg_query_params($conectarse, $query);
// Verifico si la consulta se llevo a cabo correctamente, sino aviso
if (!$result) die("\nError in SQL query: " . pg_last_error() . "\n");
}
else
$band = 1;
// fin del if
} // end-while
// Cierro el archivo
fclose($file);
// Termino la conexion
pg_close($conectarse);
?>
La conexion se hace correctamente, pero a la hora de hacer un insert me da el siguiente error: "Error in SQL query:" es decir, el mensaje de error que tengo por si falla la query pero no me da informacion de porque falla
Alguien sabe que puede ser lo que este fallando? estuve todo el dia tratando de hacerlo andar y no pude =(
Gracias!