-1

PDO を使用して、データ (主にテキスト) とオプションの画像を保存したいと考えています。したがって、テキストはまったく問題ありませんが、私の問題は「オプション」の画像にあります。

オプションの画像フィールドを提供するクエリを作成するにはどうすればよいですか。

テキストの場合: 次のようなもの:

$conn = new PDO(DNS, username, password);
$sql = "INSERT INTO DATABASE (fields) VALUES ( using place holders (? or :holder))";
$stmt = $conn->prepare($sql);
$stmt->bindparam(':holder', '$_GET['value']');
$stmt->execute();

しかし、オプションの画像の場合、どうすればよいですか?

ファイルタイプの入力でフォームを作成しました:

<input type="file" name="image" />

アップデート:

次のフォームを想像してみましょう。

<form action="index.php" method="post" enctype="multipart/form-data" >
<input type="text" name="sometext" />
<input type="file" name="someimage"/>
<input type="submit" name="sendform" value="send"/>
</form>

ファイルタイプの入力はオプションです。私が知りたいのは、PDO を使用してその目的のためのクエリを作成する方法です。つまり、ユーザーが画像を送信する場合と送信しない場合がありますが、テキストが必要になります。

ありがとうございました。

4

1 に答える 1

-1

PHPから: ラージ オブジェクト (LOB)

<?php
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$stmt = $db->prepare("insert into images (id, contenttype, imagedata) values (?, ?, ?)");
$id = get_new_id(); // some function to allocate a new ID

// assume that we are running as part of a file upload form
// You can find more information in the PHP documentation

$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();

その要点は、ファイルハンドルを渡すことができPDOStatement::bindParam、PDO をラージ オブジェクトとして保存する必要があることを伝え (正確なデータ型はデータベースによって異なります)、PDO が残りを処理することです。

ファイルのアップロードをオプションにすることについては、何かアップロードしたかどうかを確認してください。そうでない場合nullは、ファイルハンドルの代わりにバインドします。

于 2013-01-14T00:09:51.043 に答える