Foros del Web » Programando para Internet » PHP »

Problemas con ODBC

Estas en el tema de Problemas con ODBC en el foro de PHP en Foros del Web. Hola que tal, estoy utilizando el objeto ODBC para conectarme al sqlserver 2008 ya que quiero subir archivos de todo tipo a mi BD, pero ...
  #1 (permalink)  
Antiguo 29/05/2009, 00:04
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 2 meses
Puntos: 0
Problemas con ODBC

Hola que tal, estoy utilizando el objeto ODBC para conectarme al sqlserver 2008 ya que quiero subir archivos de todo tipo a mi BD, pero el SQL Server me retorna el sguiente error.

[Microsoft][ODBC SQL Server Driver]Error de sintaxis o infracción de acceso

En esta linea...
odbc_exec($link,"insert into xalla values (CONVERT(binary,'$binario_contenido'))");

Este el codigo...
Código PHP:
<?php

include ("conex.php");
$link=conectarse();

if (empty(
$_FILES['archivo']['name']))
  
header("location: formulario.php?error=1");

$binario_nombre_temporal=$_FILES['archivo']['tmp_name'];
$binario_tipo=$_FILES['archivo']['type'];

if(
$binario_tipo=="image/jpeg")
{
  
$fichero=fopen($binario_nombre_temporal"rb");
  
$binario_contenido=fread($ficherofilesize($binario_nombre_temporal));
  
$binario_contenido=addslashes($binario_contenido);

  
odbc_exec($link,"insert into datos values (CONVERT(binary,'$binario_contenido'))");
   
  if(
odbc_error())
    echo 
'<script> alert("'.str_replace("[Microsoft][ODBC SQL Server Driver][SQL Server]","",odbc_errormsg($link)).'"); </script>';
  else
    
header("location: formulario.php?error=0");
}
else
  
header("location: formulario.php?error=2");
 
?>
el tipo de dato del campo mi tabla es varbinary, tambien intente con binary..

Espero posible solución..... saludos.
  #2 (permalink)  
Antiguo 29/05/2009, 00:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas con ODBC

La tabla tiene solamente un campo? Si no es asi, intenta especificandolo:

odbc_exec($link,"insert into datos (nombre_campo_binario) values (CONVERT(binary,'$binario_contenido'))");
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 29/05/2009, 19:03
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 2 meses
Puntos: 0
Cita:
Iniciado por Triby Ver Mensaje
La tabla tiene solamente un campo? Si no es asi, intenta especificandolo:

odbc_exec($link,"insert into datos (nombre_campo_binario) values (CONVERT(binary,'$binario_contenido'))");

sip, solo tiene un campo, y tampoco funciona especificando el campo...



ayuda pliss....

up!!!

Última edición por GatorV; 01/06/2009 a las 11:32
  #4 (permalink)  
Antiguo 31/05/2009, 23:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Problemas con ODBC

Porque deseas añadir la foto directamente a la base de datos. Porque mejor no la añades al servidor y luego el link en la bas de datos?
  #5 (permalink)  
Antiguo 01/06/2009, 03:15
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Problemas con ODBC

Cita:
Iniciado por abimaelrc Ver Mensaje
Porque deseas añadir la foto directamente a la base de datos. Porque mejor no la añades al servidor y luego el link en la bas de datos?
Tengo que subir imagenes a la base de datos por un proyecto que estoy realizando para la Universidad, por mi evitaria esto pero lo tengo que hacer de esta forma...

Saludos....
  #6 (permalink)  
Antiguo 01/06/2009, 07:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Problemas con ODBC

Si tuvieras una tabla que no tuvieras que subir binarios, por ejemplo ¿puedes subir texto? es para saber si esta bien configurado el odbc y puedas aparte del binario subir texto
  #7 (permalink)  
Antiguo 01/06/2009, 14:17
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Problemas con ODBC

Cita:
Iniciado por abimaelrc Ver Mensaje
Si tuvieras una tabla que no tuvieras que subir binarios, por ejemplo ¿puedes subir texto? es para saber si esta bien configurado el odbc y puedas aparte del binario subir texto
si, esta todo ok, hace tiempo que vengo trabajando a traves de ODBC...

Buano ahora por fin pude guardar binarios codificandolos antes a base64
Código PHP:

        $fichero
=fopen("imagenes/foto.jpg""rb");
        
$banner=fread($ficherofilesize($dir));
        
$banner=addslashes($banner);
                
$banner=base64_encode($banner); 
Pero ahora el problema es leer estas imagenes, porque nose en que parte poner base64_decode(); en este codigo

fotos.php
Código PHP:

        
include("../scripts/conexion.php");
    
$link=Conectarse();
    
    
$result=odbc_exec($link,"select banner from usuarios");
    
    
odbc_longreadlen($result131072);
    
odbc_binmode($result,ODBC_BINMODE_PASSTHRU); 
    echo 
odbc_result($result,1); 
Si trato de hacer esto no funciona

Código PHP:

echo base64_decode(odbc_result($result,1)); 

Obviamente llamo a este script en cualquieras de mis paginas de esta forma..

Código HTML:
<img src="fotos.php"> 
  #8 (permalink)  
Antiguo 02/06/2009, 02:44
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Problemas con ODBC

Bueno al fin logre solucionar mi problema y dejo aqui la solución para aportar de alguna forma al foro...

La tabla:
Create table imagenes(
foto image not null
);

Para guardar:

Código PHP:

$banner
=base64_encode(addslashes(fread(fopen("foto.jpg""rb"), filesize($dir))));

odbc_exec($link"insert into imagenes (foto) values ('$banner')"); 

y para leer:
Código PHP:

$id
=$_GET['foto'];
$result=odbc_exec($link,"select foto from imagenes where id=$id");

odbc_longreadlen($result131072);
header("Content-type: image/jpeg");
echo 
stripslashes(base64_decode(odbc_result($result,1))); 

Saludos....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:55.