2

これについて数え切れないほどのさまざまなヘルプ メニューとトピックを調べましたが、まだ問題があります。アップロードされた画像のファイルパスを MySQL データベースに挿入したいだけです。画像を変数に渡してから、クエリを使用してそれをデータベースにプッシュしようとしましたが、機能していません。私のコードは以下、フォームは上、php は以下です。

<html>

<body>

<h1>test</h1>

<form action="insert.php" method="post" enctype="multipart/form-data">

Name <input type="text" name="name" /><br><br>

Description <input type="text" name="desc" /><br><br>

Price Low<input type="text" name="price_low" /><br><br>

Price High <input type="text" name="price_high" /><br><br>

<input type="hidden" name="MAX_FILE_SIZE" value="512000" />
3.Send this file: <input name="userfile" type="file" />
4.<input type="submit" value="Send File" /

<input type="submit" />

</form>
a

</body>
</html>




<html>

<?php
 //upload image
$uploaddir = '';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
//end of upload image


if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed";
}



$con = mysql_connect("localhost","admintest","gen");

if (!$con)

  {

  die('Could not connect: ' . mysql_error());

  }



mysql_select_db("test2", $con);



$sql="INSERT INTO products (name, description, price_low, price_high)

VALUES

('$_POST[name]','$_POST[desc]','$_POST[price_low]','$_POST[price_high]')";



if (!mysql_query($sql,$con))

  {

  die('Error: ' . mysql_error());

  }

echo "1 record added";



mysql_close($con)

?>



</body>
4

1 に答える 1

0

セキュリティの問題非推奨の拡張子は別として、ファイル名をデータベースに挿入するだけです。これを行うには、データベースに「ファイル名」フィールドを追加し、それに応じて挿入クエリを調整します。

INSERT INTO products (name, description, price_low, price_high, filename)
              VALUES (:name, :desc, :price_low, :price_high, :filename)

また、$uploaddir変数は空です。ファイルはおそらく現時点ではどこにも保存されていません。ファイルを適切に移動するには、次のようにしてください。

$uploaddir = '/path/where/you/can/save/';
$rawFilename = $_FILES['userfile']['name'];
$extension = pathinfo($rawFilename, PATHINFO_EXTENSION);

$uploadfile = $uploaddir . md5($rawFilename) . '.' . $extension;

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Upload failed";
}

このスクリプトは、アップロードされたコンテンツを信頼していることを前提としています。md5 関数は、ファイルの名前を "サニタイズ" するための迅速かつ簡単な方法です (そう呼ぶことができる場合)。

于 2013-05-21T03:21:38.890 に答える