0

MySQL データベースにファイルされた blob のフォームにプリロードされた画像を保存する必要があります。

フォームコードは次のとおりです。

<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>Image Name</td>
      <td><input type="text" name="imgName" id="imgName" /></td>
    </tr>
    <tr>
      <td>Image</td>
      <td><input type="image" name="myImg" id="myImg" src="images/1209894_11404408.jpg" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2" align="center" valign="middle"><input type="submit" name="Submit" id="Submit" value="Submit" /></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1" />
</form>

これがテーブル構造の create ステートメントです。私はInnoDBを使用しています:

CREATE TABLE IF NOT EXISTS `img` (
  `img_id` int(11) NOT NULL AUTO_INCREMENT,
  `img_name` varchar(200) DEFAULT NULL,
  `img_img` longblob,
  PRIMARY KEY (`img_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

私が使用している挿入クエリは次のとおりです。

INSERT INTO img (img_name, img_img) VALUES ('$_POST['imgName']', '$_POST['myImg']')

ティア

ヨギ・ヤン

4

2 に答える 2

1

まず最初に、ファイルのアップロードをサポートするように HTML フォームを設定する必要があります。それを許可する正しいフォーム タグは次のようになります。

<form enctype="multipart/form-data" id="form1" name="form1" action="<?php echo $editFormAction; ?>" method="post">

アップロード フォームを処理する PHP スクリプトは次のようになります。

if (isset($_FILES['myImg']) && $_FILES['myImg']['size'] > 0) {
  $tmpName = $_FILES['myImg']['tmp_name'];
  $fp = fopen($tmpName, 'r');
  $data = fread($fp, filesize($tmpName));
  $data = addslashes($data);
  fclose($fp);

  //Fill all the other form vars

  $query = "INSERT INTO img ";
  $query .= "(img_img) VALUES ('$data')";
  $results = mysql_query($query, $link);
 }

もちろん、最初に MySQL 接続を開き、完了後に閉じる必要があります。

それが役に立てば幸い。

敬具

于 2013-03-28T13:47:22.807 に答える