0

次のimage-resizerを実装しました: http ://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/

次に、アップロードした画像をデータベースに挿入します。

include('simple_image.php');
$image_rez = new SimpleImage();
$image_rez->load($file);
$image_rez->resizeToWidth(990);
$image_rez->save($image_name.'.jpg');

$sql = "INSERT INTO
            `Media_images` (`ID`,`Name`,`Image`,`Size`)
        VALUES
            (?, ?, ?, ?)
        ";

$stmt = $db->prepare($sql);

if (!$stmt) {
    echo 'Datenbankfehler\n';
    echo $db->error;
}

$stmt->bind_param('ssss', $_POST['id'], $image_name, (string)$image_rez, $image_size);

if (!$stmt->execute()) {
    echo 'Datenbankfehler\n';
    echo $stmt->error;
}

//Cache löschen
destroy(PATH);
//Redirekt wenn erfolgreich eingetragen
header("location:../../index.php?section=media");
die;

しかし、私は次のエラーを取得しています:

キャッチ可能な致命的なエラー:SimpleImageクラスのオブジェクトを文字列に変換できませんでした。

Error-Lineは、$imageをバインドする場所です。このオブジェクトを文字列に変換するにはどうすればよいですか?(string)($ image_rez)をキャストしようとしましたが、成功しませんでした。

4

1 に答える 1

1

$ image_rezは画像であり、データベースにBLOBとして保存するのが最適です。bind_paramのタイプをbに変更し、(文字列)を削除します。

また、$ image_rezは画像ではなく、SimpleImageオブジェクト全体です。バインドでは、$ image_rezの代わりにfile_get_contents($image_name。'。jpg')を使用する必要があります。

:データベースは、画像を保存するための適切な場所ではありません。データベースに保存されている画像へのパスとともに、ファイルシステムに保存する必要があります。

于 2012-06-11T16:13:00.243 に答える