Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 编程 » PHP 支持 » SQL Anywhere PHP 扩展 » PHP 脚本开发

 

PHP 应用程序中的 BLOB

SQL Anywhere 数据库可以将任何类型的数据作为一个二进制大对象 (BLOB) 存储。如果 Web 浏览器可以读取该类型的数据,则 PHP 脚本可以从数据库方便地检索数据,并将其显示在动态生成的页上。

BLOB 字段通常用于存储非文本数据(如 GIF 或 JPG 格式的图像)。许多类型的数据无需使用第三方软件或通过数据类型转换,即可传递到 Web 浏览器。以下示例说明了将一个图像添加到数据库中,然后对其进行再次检索以在 Web 浏览器中显示的过程。

本示例与 SQL Anywhere 安装目录下 image-insert.phpimage-retrieve.php 文件的代码类似。这些示例也说明了如何使用 BLOB 列存储图像。



<?php
  $conn = sasql_connect( "UID=DBA;PWD=sql" )
        or die("Cannot connect to database");
  $create_table = "CREATE TABLE images (ID INTEGER PRIMARY KEY, img IMAGE)";
  sasql_query( $conn, $create_table);
  $insert = "INSERT INTO images VALUES (99, xp_read_file('ianywhere_logo.gif'))";
  sasql_query( $conn, $insert );
  $query = "SELECT img FROM images WHERE ID = 99";
  $result = sasql_query($conn, $query);
  $data = sasql_fetch_row($result);
  $img = $data[0];
  header("Content-type: image/gif");
  echo $img;
  sasql_disconnect($conn);
?>

为了能够将二进制数据从数据库直接发送到 Web 浏览器,脚本必须使用标头函数设置数据的 MIME 类型。在此示例中,系统会告诉浏览器该数据是一个 GIF 图像,以便浏览器正确显示该数据。