FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Insertar una imagen en BBDD con SQL Server y PHP
Hola a todos.
Creo estar siguiendo todos los pasos necesarios para "subir" un archivo JPG a un registro de bbdd SQl Server 2000. La función: Código PHP:
El problema es que al intentar ejecutar el update, me da toda una secuencia de errores de los que adjunto alguno: Warning: mssql_query() [function.mssql-query]: message: Line 8: Incorrect syntax near ')'. (severity 15) in C:\miprograma.php on line 1221 Warning: mssql_query() [function.mssql-query]: message: The identifier that starts with 'y$µwZ§ì‹ñªÃáîµâ _A³Ólôý\"k§_G½bŽ&l\0¥» ñ\'—`è¾iUÛÍjûÇןà û_õ>AÒö¿‡ìSû«òþ«µý—?d}\'ö¬ø£ñÃSøžo¾‡¤Á¨YÜ,\"xüù$EÛ\"ðJíßÐ× ¡³aÙù' is too long. Maximum length is 128. (severity 15) in C:\miprograma.php on line 1221 y no veo el origen ni la manera de solucionarlo. ¿ A alguien se le ocurre algo ? Gracias de antemano y un saludo a todos. |
#2
|
|||
|
|||
Hola.
Vista la inexistencia de respuestas mucho me temo que se trate de un tema ajeno a casi todos. Por eso me he empeñado y al final creo haber conseguido solucionar el problema. Lo paso al foro por si ayuda a alguien. - En primer lugar, el campo de la tabla SQl Server que contiene la imagen debe ser "binary" o "varbinary". Si usamos los predefinidos tipo "Image" no funciona. - A la hora de actualizar el contenido, hay que usar la función CONVERT, que vuelca a datos binarios, de la forma: update tabla set campobinary = convert(binary, '$contenido') where IDReg = $ID De este modo sí funciona. Lo que ahora no quiere funcionar, es la visualización del archivo, en mi caso jpg. Intento lo que normalmente es correcto: <img src='pruebas.php'> donde pruebas.php hace un select del campo y luego un echo, precedido del correspondiente header("Content-type: image/jpeg") A ver si alguien puede echarme un cable con esto, aunque por las fechas que estamos parece que andemos bajo mínimos. Gracias de nuevo y saludos. |
#3
|
|||
|
|||
Gines, estoy muy interesado en este tema ya que es justo lo que necesito hacer para uno de mis proyectos.
Estoy trabajando con MS SQL Server + PHP y hasta ahora tenia un directorio con permisos para usuarios anonimos donde subia las imagenes y las usaba. Pero ahroa me interesa guardar las imagenes en la bdd. Al igual que tu, ando un poco desesperado. He encontrado mucha info acerca de MySQL + PHP, pero en cuanto a SQL Server apenas encuentro nada. Se que hay que tener el formato de registro en binary en lugar de image y que hay que pasar la imagen a binario para guardarla. Para visualizarla hay que cambiar el header antes de hacer el echo pero tampoco me funciona... Estoy en pruebas. Quisiera saber si al fin lo lograste? Muchas gracias! |
#4
|
|||
|
|||
Hola
Yo utilizao MySql y resuelvo ese problema simplemente con la función "addslashes" aplicada a contenido de la imagen. El segundo tema, el que no te funcione el mostrar la imagen, es posible que sea por el echo de utilizar la función "convert", pienso yo, si has realizado una conversión para guardar supongo que para mostrar el contenido tendrás que hacer el paso contrario. Prueba usar "addslashes" en vez de "convert" a ver si se soluciona el problema. PD. "addslashes" es una función de PHP. Última edición por kayetano fecha: 31-05-2006 a las 17:30:25. |
#5
|
||||
|
||||
¿Pero porque debe estar la imagen exactamente en la base de datos?, no sería mas fácil (además de ahorrarnos tiempo en la consulta) si solo guardamos la ubicación de la imagen en la base de datos, tomamos este dato con php y llamamos a la imagen despues de esto.
En general los servicios de hospedaje tienen una cantidad un tanto pequeña para las bases de datos, mientras que es todo lo contrario con el espacio en disco que ofrecen, ademas si el servidor de bd está en un equipo distinto al del servidor web, estará tardando mas tiempo en la consulta. Saludos. |
#6
|
|||
|
|||
Hola
Cita:
Pero gines no ha preguntado eso, y yo intento solucionar el problema en concreto, porque puede tener sus razones para hacerlo asín y oye saber algu nuevo nunca biene mal y puede servir en otras situaciones. |
#7
|
|||
|
|||
Solucion: insertar imagenes o archivos en una base de datos MSSQL con lenguaje PHP
...Primeramente un saludo a todos.
Se que este post en el foro ya tiene hace un buen, pero recientemente me encargaron hacer un sitio web con PHP y base de datos MSSQL y se necesitaba almacenar imagenes en una tabla en la BD sin encontrar una solucion viable , aunque afortunadamente vine a dar aqui, tuve que extender mi investigacion hasta libros de PHP/MSSQL tomando en cuenta que antes no programaba en PHP y ahora que si, este ejemplo se lleva a cabo con la version "PHP 5.2.2" y MSSQL 2000, para esto encontre ciertas configuraciones previas que hay que tomar en cuenta para que esto funcione, asi que si mas preambulos ay les va la receta: primeramente creamos la tabla en la base de datos, el nombre que gusten los campos que gusten, y para este ejemplo vamos a manejar 4 campos para almacenar las imagenes: [foto] [text] ,En donde el campo foto, es un campo de texto normal, alli es donde vamos a guardar la imagen, los demas campos contendran la informacion de la imagen. despues... antes de empezar a programar cualquier cosa en PHP, tenemos que tomar en cuenta 2 cosas importantes que deben estar configuradas en el archivo de PHP.INI: la primera, tener activadas las extensiones de mssql extension=php_mssql.dlly la segunda, como vamos a manejar imagenes las cuales vamos a convertir a texto binario largo, tenemos que tener activada esta opcion para que PHP nos permita hacerlo, esto es en las 2 siguientes lineas: ; Valid range 0 - 2147483647. Default = 4096.aqui lo que hacemos es poner al maximo el rango valido para que PHP pueda manejar en un GET o POST la informacion que vamos a mandar a la base de datos. ahora si... a programar. vamos a hacerlo en 2 pasos, el upload y el download, en el upload, primeramente creamos un formulario con estas caracteristicas: <form method="POST" enctype="multipart/form-data" action="inserta_imagen.php">despues creamos el archivo inserta_imagen.php, en donde la informacion que vamos a obtener la vamos a manejar asi: $Imagen = $_FILES['foto_a_subir']['tmp_name'];las primeras 4 lineas es donde php obtiene la informacion de la imagen, primeramente la imagen, luego el nombre, tipo de archivo y la ultima linea es en donde esta el secreto de este asunto, lo que hacemos es convertir la imagen a codigo binario codificado a 64, incluyendo los slashes. esta informacion se va a guardar directamente asi tal cual, en el campo foto de la base de datos. hacemos el INSERT INTO y listo... $Query = "INSERT INTO fotografias(id_foto, foto, foto_nombre, foto_kb, foto_tipo) VALUES(" . $Fotografia . "','" . $FotoNombre . "','" . $FotoKb . "','" . $FotoTipo . "')";luego, para poder visualizar la imagen, es muy sencillo, simplemente tomamos la misma informacion en un SELECT, pero para esto tenemos que volver a convertir el codigo binario de 64, para eso hacemos lo siguiente, anteriormente solicitamos extraer la informacion de tipo de imagen, esto para posteriormente poder manipular el contenido a imprimir en pantalla: $Query_fotos = mssql_query("SELECT foto,foto_nombre,foto_tipo,foto_kb FROM $Tabla WHERE $LaCondicion=$ID");aqui primeramente hacemos nuestro SELECT, traemos la info y lo ponemos en un array, luego, mandamos cambiar el header de la pagina, indicando el tipo de contenido el cual solicitamos cuando subimos la imagen, luego, convertimos el codigo binario con la funcion base64_encode y listo. y asi es como consegui subir fotos o archivos a mi base de datos con PHP y MSSQL, sigan los pasos tal cual como se los puse aqui, y no van a tener ningun problema. felices teclazos... hasta pronto. Última edición por Jiro-101 fecha: 04-06-2007 a las 21:53:41. |
#8
|
|||
|
|||
problemas al extraer imagen desde ms sql server 2005
buen día, he leído este post y es el único mas o menos referenciado con mi problema.
Resulta que necesito extraer una imagen desde sql server 2005, desde un campo tipo "image".... esto lo hago desde php, pero no lo he logrado, la salida es parcial y nunca completa la imagen. he intentado infinidad de métodos según los que he conseguido y nada todavía. estoy desarrollando una aplicación de integración remota de datos y necesito tomar esa imagen para insertarla en una base de datos mysql, o convertirla en un archivo físico para después trasladarla por ftp, lo que ya hago normalmente. la verdad tengo bastante experiencia en php pero no he logrado dar con la solución, siempre me saca parcialmente la imagen, he intentado por odbc.... y ahora ya tengo configurado php con conexión directa a mssql y nada. agradecería cualquier ayuda para la extracción de la imagen y su escritura en físico, o inserción en la base de datos... gracias por su aporte, espero alguna noticia. feliz dia |
#9
|
||||
|
||||
Súper util este tema, muchas gracias a todos por sus aportes.
Saludos. |
|
|
|