【问题标题】:Updating user image using UPDATE Query ( Not working )使用 UPDATE Query 更新用户图像(不工作)
【发布时间】:2012-03-06 20:16:17
【问题描述】:

我正在创建一个用户面板,用户可以在其中注册和上传图像。一旦他们登录,他们可能会决定编辑该图像,因此我想执行更新查询以将新图像添加到该位置并将新图像附加到他们的 mysql 数据中。

所以当我提交代码时发生了什么:我收到一条错误消息::抱歉,上传您的文件时出现问题。

希望有人可以告诉我为什么这会给我一个错误。 PS 当他们第一次注册上传文件时,我已经在使用这个位置。但这当然不应该有任何问题。我发现的另一个问题是照片的 MYSQL 表中没有成功插入任何内容。

代码如下:

表:管理员

CREATE TABLE IF NOT EXISTS `admin` (
      `id` int(3) NOT NULL auto_increment,
      `UserName` varchar(30) default NULL,
      `PassWord` varchar(30) default NULL,
      `name` varchar(30) default NULL,
      `mainContent` varchar(2000) default NULL COMMENT 'maincontent test',
      `photo` varchar(400) NOT NULL COMMENT 'Picture1',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=64 ;

假设用户已经登录到他们的用户面板:他们点击链接到他们的 ID 的编辑按钮。

所以它们出现在编辑页面:

EDIT.PHP

<?php
session_start();
$UserName = $_SESSION['UserName'];
require("checkLoginSession.php");
$adminid = $_GET['id'];


// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");


echo("Logged In As: $UserName");
echo "<br />";
echo("We are editing Data for ID: $adminid");
echo "<br />";
echo "<a href=test.php>Go back to panel</a>";

$id=$_GET['id'];
// Retrieve data from database 
$sql="SELECT * FROM admin WHERE id='$id'";
$result=mysql_query($sql) or die(mysql_error());

$rows=mysql_fetch_array($result);
?>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<form name="form1" method="post" action="update_ac.php">
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>&nbsp;</td>
<td colspan="3"><strong>Update data in mysql</strong> </td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center"><strong>Name</strong></td>
<td align="center"><strong>Main Content</strong></td>
<td align="center"><strong>Image Locatoin</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="center"><input name="name" type="text" id="name" value="<? echo $rows['name']; ?>"></td>
<td align="center"><input name="mainContent" type="text" id="mainContent" value="<? echo $rows['mainContent']; ?>" size="15"></td>
<td align="center"><input name="photo" type="file" id="photo">
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"></td>
<td align="center"><input type="submit" name="Submit" value="Submit"></td>
<td>&nbsp;</td>
</tr>
</table>
</td>
</form>
</tr>
</table>

<?
mysql_close();
 ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Edit Page</title>
</head>

<body>
<h2>Edit Page (<?php echo ("$adminid"); ?>)</h2>
<a href="test.php"><img src="backtopanel.jpg" alt="back to panel" width="454" height="85" border="0" longdesc="back to panel" /></a>
</body>
</html>

update_ac.php

<?php
session_start();
$UserName = $_SESSION['UserName'];
require("checkLoginSession.php");
include "common.php";
DBConnect();
$Link = mysql_connect($Host, $User, $Password);

$id = $_POST['id'];

$target = "images/"; 
$target = $target . basename( $_FILES['photo']['name']); 
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// update data in mysql database 
$_POST = array_map("mysql_real_escape_string", $_POST); 
$firstName = $_POST["name"];
$mainText = $_POST["mainContent"];
$pic=($_FILES['photo']['name']); 


//



$sql="UPDATE admin SET name='$firstName', mainContent='$mainText', photo='$pic' WHERE id='$id'";

echo $sql;

//

if (mysql_db_query ($DBName, $sql, $Link)){
print ("A record was created <br><a href=index.php> return to index </a>\n");


 //Writes the photo to the server 
 if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
 { 

 //Tells you if its all ok 
 echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
 } 
 else { 

 //Gives and error if its not 
 echo "Sorry, there was a problem uploading your file."; 
 } 


} else {

print ("Record not created");   
}

mysql_close($Link);
?>

【问题讨论】:

  • 听起来像是权限问题。

标签: php mysql html css database


【解决方案1】:

一些事情:

如果$_FILES 中没有任何内容,那么您可能错过了指定图像的提交页面的表单标签中的enctype="multipart/form-data"

处理上传的文件时,您需要使用$_FILES['inputName']['tmp_name'] 获取文件的临时位置,然后使用move_uploaded_file($_FILES['inputName']['tmp_name'], 'destination'); 移动它并将目标值存储在数据库记录中。

在您要显示图像的编辑页面上,您需要显示图像本身(使用和img 标签)以及一个文件input,以便在需要时更改图像。

我可以继续,但我真的认为你需要阅读一些关于 PHP 中的表单/文件处理的教程,这就是为什么你没有收到任何回复的原因......

【讨论】:

  • 我会尽快检查这个,伙计,认为你对多上传的第一条评论是对的。我以前做过。问候乔恩
  • 完美的感谢伙伴这完美的工作。我有代码,我仍然不确定为什么我需要这个你可以扩展吗?问候,乔恩
  • 为什么需要它的一些答案:stackoverflow.com/questions/4526273/…
  • 谢谢,感谢 :) 问候,乔恩
猜你喜欢
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 2013-06-11
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多