0

こんにちは、私はまた新しい問題を抱えてここにいます。そのため、写真をアップロードする場所でコードを機能させることができました。ただし、既存の行を更新し(写真に使用できるフィールドを追加しました)、写真を表示する必要があります。ただし、現時点では、画像専用の小さなデータベースしか更新できません。問題は、正しくアップロードされないことです。「何らかの理由でアップロードできませんでした!」というエラー メッセージが表示されます。しかし、理由はわかりません。

現在のコードは次のとおりです。

<?php

session_start();

?>

<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1.0" />
<title>TF2 NUT</title>
<link rel="stylesheet" href="css/style.css" />
</head>

<div id="Container">

<div id="header">
<h1>Welcome to TF2 NUT!</h1>
</div>

<div id="nav">

<?php

include_once "nav.php";

?>

</div>

<div id="Content">
<form action="CAPimg.php" method="POST" enctype="multipart/form-data">
Choose weapon to upload to: <br />
<input type="text" name="Name" id="Name" /><br />
<input type="file" name="image"><input type="submit" name="submit" value="Upload"     />
</form>
<?php

if(isset($_POST['submit'])) {

mysql_connect("localhost","root","") or die("Could not find database!");
mysql_select_db("weapons") or die("Could not find database!");

$Name = strip_tags ($_POST['Name']);
$imageName = mysql_real_escape_string($_FILES["image"]["name"]);
$imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
$imageType = mysql_real_escape_string($_FILES["image"]["type"]);

if(substr($imageType,0,5) == "image") {
    mysql_query("UPDATE `weapon` VALUES Image_name='$imageName',     Image='$imageData' WHERE Name='$Name' AND Creator='$_SESSION[username]'") or die("Could not upload for some reason!");
    echo "Image uploaded!";
}
else
{
    echo "Only images are allowed!";
}

}

?>
<br />
<a href="subcentral.php">Return to submission central</a>
</div>

</div>

</html>

「nav.php」内に存在するログインから「Creator」を取得します。私はガイドを探しましたが、それらのほとんどはファイルディレクトリをカバーしているだけです(私はリモートサーバーで作業しているのでできません)および/またはASP. はい、コードを新しい拡張機能に更新する必要があることはわかっていますが、現時点では更新が遅れています。したがって、誰かが私の画像を両方表示するのを手伝ってくれるなら(このようなidを参照せずに:

<?php

mysql_connect("localhost","root","") or die("Could not find database!");
mysql_select_db("images") or die("Could not find database!");

if(isset($_GET['id'])) {

$id = mysql_real_escape_string($_GET['id']);
$query = mysql_query("SELECT * FROM `blob` WHERE `id`='$id'");

while($row = mysql_fetch_assoc($query)){

$imageData = $row["image"];


}
header("content_type: image/jpeg");
echo $imageData;

}
else
echo "Error!";

?>    

<html>
<body>

<img src="showimage.php?id=4">

</body>
</html>

私のデータベースには複数のフィールドが含まれています:

id、Creator、Name、Base_Damage、Damage、Pellets、Attackspeed、RS(最初)、RS(連続)、Loaded、Reserve、Critical、Ability、Piece_set、Bonus_set、Description、Image_name、Image。

ご覧のとおり、最後の 2 つのフィールドは画像専用であり、更新したいものです。行に含まれる情報を書き出すとき。

誰かが最初の問題で私を助けてくれたら嬉しいですが、誰かが両方の問題で私を助けてくれるなら、私は本当に幸せです(私はPHPが初めてなので)。いつものように、これに関連する可能性のある何かを明確にしたり、コードを投稿したりしたい場合は、私に尋ねてください.

4

2 に答える 2

1

ドキュメントを参照UPDATEすると、クエリの構文が間違っていることがわかります。

正しい構文は次のとおりです。

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

SETの代わりに使用する必要がありますVALUES

試す:

mysql_query("
UPDATE `weapon` SET Image_name='$imageName',Image='$imageData' 
WHERE Name='$Name' AND Creator='$_SESSION[username]';
") or die("Could not upload for some reason!");

お役に立てれば!

于 2013-07-14T17:48:50.987 に答える
0

「何らかの理由でアップロードできませんでした!」というエラー メッセージが表示されます。なぜなら、ここで実行することにより、クエリが失敗した場合に、実際のエラーを尋ねるのではなく、それを表示するように mysql クエリに指示したからor die(mysql_error())です。

  mysql_query("UPDATE `weapon` VALUES Image_name='$imageName',     Image='$imageData' 
              WHERE Name='$Name' 
              AND Creator='$_SESSION[username]'")
              or die("Could not upload for some reason!");

したがって、上記のコードを追加するように変更する必要がありますor die(mysql_error())

 mysql_query("UPDATE weapon SET Image_name='$imagename', Image='$imageData' WHERE Name='$Name' AND Creator='$_SESSION[username]' ")
                  or die(mysql_error());

別のこと、UPDATEステートメントは必要ありませんVALUE、それは単にあるべきです UPDATE weapon SET Image_name='$imagename', Image='$imageData' WHERE Name='$Name'

上記のすべてを行ったとしても、前述したように、データベースは依然として mysql インジェクションに弱いため、学習PDOまたは学習のほうが優れています。mysqli

于 2013-07-14T17:43:31.320 に答える