sql >> データベース >  >> RDS >> Mysql

PHPを使用して.pdfファイルをBLOBとしてMySQLに保存するにはどうすればよいですか?

    追加するために編集 :次のコードは古く、PHP 7では機能しません。詳細については、回答の下部にある注を参照してください。

    整数IDとblobDATA列のテーブル構造を想定し、MySQL関数がデータベースとのインターフェースに使用されていると想定すると、おそらく次のようになります。

    $result = mysql_query 'INSERT INTO table (
        data
    ) VALUES (
        \'' . mysql_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf')) . '\'
    );';
    

    ただし、ブロブをデータベースに格納することは、テーブルの肥大化を引き起こす可能性があり、それに関連する他の多くの問題があるため、一般的に最良のアイデアとは見なされません。より良いアプローチは、ファイルを取得できるファイルシステム内のどこかにファイルを移動し、ファイル自体ではなくデータベースにファイルへのパスを保存することです。

    また、mysql_ *関数呼び出しの使用は推奨されていません。これらのメソッドは事実上非推奨であり、4.xより新しいバージョンのMySQLを念頭に置いて実際に構築されていないためです。代わりにmysqliまたはPDOに切り替える必要があります。

    更新 :mysql_*関数は非推奨です PHP 5.xであり、 PHP 7で完全に削除されました! 現在、より最新のデータベース抽象化(MySQLI、PDO)に切り替える以外に選択肢はありません。歴史的な理由から、上記の元の回答はそのままにしておくことにしましたが、実際には使用しないでください

    手続き型モードでmysqliを使用してこれを行う方法は次のとおりです。

    $result = mysqli_query ($db, 'INSERT INTO table (
        data
    ) VALUES (
        \'' . mysqli_real_escape_string (file_get_contents ('/path/to/the/file/to/store.pdf'), $db) . '\'
    );');
    

    これを行う理想的な方法は、MySQLI/PDOのプリペアドステートメントを使用することです。



    1. 選択フォームを使用してmysqlの特定の列にチェックボックス値を挿入するためのPHPコード

    2. ユーロ記号がサイトに表示されない

    3. Oracle DBに接続するときに、ネットワークアダプタが接続を確立できませんでした

    4. DELETE FROM `table` AS` alias` ... WHERE `alias`.`column` ...なぜ構文エラー?