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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere PHP-API » PHP-Skripten schreiben

 

Mit BLOBs arbeiten

SQL Anywhere-Datenbanken können alle Arten von Daten als Binary Large Objects (BLOBs) speichern. Wenn diese Daten einen Datentyp haben, der von einem Webbrowser gelesen werden kann, können Sie sie mit einem PHP-Skript aus der Datenbank abrufen und in einer dynamisch generierten Seite anzeigen.

BLOB-Felder werden häufig zum Speichern von Daten verwendet, bei denen es sich nicht um Text handelt, wie z.B. Bilder in den Formaten GIF oder JPG. Viele Datentypen können an einen Webbrowser übergeben werden, ohne dass zusätzliche Software oder Datentypkonvertierungen notwendig wären. Das folgende Beispiel zeigt, wie ein Bild in die Datenbank eingefügt und dann zur Anzeige in einem Webbrowser wieder abgerufen wird.

Dieses Beispiel ist ähnlich dem Beispielcode in den Dateien image_insert.php und image_retrieve.php der SQL Anywhere-Installation. Die Beispiele veranschaulichen auch die Verwendung einer BLOB-Spalte zum Speichern von Bildern.

<?php
  $conn = sasql_connect( "UID=DBA;PWD=sql" )
        or die("Can not 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);
?>

Um die Binärdaten aus der Datenbank direkt in einem Webbrowser einzulesen, muss das Skript den MIME-Typ der Daten über die Header-Funktion festlegen. In diesem Fall wird dem Browser mitgeteilt, dass ein GIF-Bild übertragen wird, damit er dieses richtig anzeigen kann.