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”中存在的登录名中获取“创建者”。我一直在寻找指南,但它们中的大多数要么只涵盖文件目录(我使用远程服务器,所以我不能这样做)和/或 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(first), RS(consecutive), Loaded, Reserve, Critical, Ability, Piece_set, Bonus_set, Description, Image_name, Image。

如您所见,最后两个字段专用于图像,这就是我要更新的内容。当我写出该行中包含的信息时。

如果有人帮助我解决第一个问题,我会很高兴,但如果有人可以帮助我解决这两个问题,我会非常高兴(因为我是 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

您收到错误消息“由于某种原因无法上传!” or die(mysql_error())因为,您已经告诉您的 mysql 查询向您展示,以防查询失败,而不是通过执行此处来询问真正的错误

  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 注入很弱,因此,您最好学习PDOmysqli

于 2013-07-14T17:43:31.320 回答