1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-23 23:02:09 +01:00
Files
archived-doc-tr/reference/pdo/lobs.xml
2022-07-13 05:32:42 +03:00

133 lines
4.4 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: eae19eb5fe0f5bebcbce382ea7a505cedeb5a883 Maintainer: nilgun Status: ready -->
<chapter xml:id="pdo.lobs" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Büyük Veri Nesneleri (LOB'lar)</title>
<para>
Uygulamanızın bir yerinde veritabanınızda büyük müktarda veri saklamanız
gerekebilir. Burada büyük veriden kasıt 4kB civarı olsa da bazı
veritabanları için büyük veri 32kB'tan başlar. Büyük veriler ikil veya
dizgesel olabilir. <methodname>PDOStatement::bindParam</methodname> ve
<methodname>PDOStatement::bindColumn</methodname> çağrılarında büyük
verilerlerle çalışmak için <constant>PDO::PARAM_LOB</constant> veri türünü
kullanabilirsiniz. <constant>PDO::PARAM_LOB</constant>, verinin bir akım
olarak eşleneceği anlamına gelir. Dolayısıyla, bu veriler üzerinde <link
linkend="ref.stream">PHP Akım işlevleri</link> ile işlem yapabilirsiniz.
</para>
<para>
<example>
<title>- Veritabanındaki bir resmin gösterilmesi</title>
<para>
Bu örnekte bir LOB, $lob değişkeni ile ilişkilendirilmekte ve
<function>fpassthru</function> üzerinden tarayıcıya gönderilmektedir. LOB
bir akımla temsil edildiğinden <function>fgets</function>,
<function>fread</function> ve <function>stream_get_contents</function>
gibi işlevlerle üzerinde işlem yapabilirsiniz.
</para>
<programlisting role="php">
<![CDATA[
<?php
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$stmt = $db->prepare("select contenttype, imagedata from images where id=?");
$stmt->execute(array($_GET['id']));
$stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);
$stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
header("Content-Type: $type");
fpassthru($lob);
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>- Bir resmin veritabanına yerleştirilmesi</title>
<para>
Bu örnekte bir dosya açılıp, bir LOB olarak veritabanına yerleştirilmek
üzere, dosya tanıtıcısı PDO'ya aktarılmaktadır. PDO, dosya içeriğini
veritabanına yerleştirme işlemini en verimli şekilde yapacaktır.
</para>
<programlisting role="php">
<![CDATA[
<?php
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$stmt = $db->prepare("insert into images (id, contenttype, imagedata) values (?, ?, ?)");
$id = get_new_id(); // Yeni bir kimlik ayıran bir işlev
// Resmin bir dosya yükleme formundan geldiğini varsayıyoruz
// PHP belgelerinde bu konuda ayrıntılı bilgi bulabilirsiniz
$fp = fopen($_FILES['file']['tmp_name'], 'rb');
$stmt->bindParam(1, $id);
$stmt->bindParam(2, $_FILES['file']['type']);
$stmt->bindParam(3, $fp, PDO::PARAM_LOB);
$db->beginTransaction();
$stmt->execute();
$db->commit();
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>- Oracle'da bir resmi veritabanına yerleştirmek</title>
<para>
Oracle, bir LOB'u bir dosyadan alıp veritabanına yerleştirirken farklı bir
sözdizimi kullanımını gerektirir. Esas olarak, yerleştirme işlemi bir
toplu hareket olarak gerçekleştirilir. Böyle yapılmazsa oluşturulan LOB,
sorgu çalıştırıldığında örtük olarak sıfır uzunluklu bir veri girişinin
parçası haline gelir.
</para>
<programlisting role="php">
<![CDATA[
<?php
$db = new PDO('oci:', 'scott', 'tiger');
$stmt = $db->prepare("insert into images (id, contenttype, imagedata) " .
"VALUES (?, ?, EMPTY_BLOB()) RETURNING imagedata INTO ?");
$id = get_new_id(); // Yeni bir kimlik ayıran bir işlev
// Resmin bir dosya yükleme formundan geldiğini varsayıyoruz
// PHP belgelerinde bu konuda ayrıntılı bilgi bulabilirsiniz
$fp = fopen($_FILES['file']['tmp_name'], 'rb');
$stmt->bindParam(1, $id);
$stmt->bindParam(2, $_FILES['file']['type']);
$stmt->bindParam(3, $fp, PDO::PARAM_LOB);
$db->beginTransaction();
$stmt->execute();
$db->commit();
?>
]]>
</programlisting>
</example>
</para>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->