好吧,我已经尝试解决这个问题几个小时了,但没有成功。希望你们中的一个或一些才华横溢的程序员能够帮助这些代码正常工作。目前,我已经建立了两个数据库:Users和AvatarDB。在Users中,我有一个名为userinfo的表,在AvatarDB中,我也有一个称为Avatars的表。我想做的是让用户上传一个头像,该头像将存储在AvatarDB中,并具有与用户ID相同的ID,当我试图上传一个头像时,我在标题中得到了错误。这是我连接到数据库的代码:
$servername = "localhost";
$username = "xxxx"; (I put the username here)
$password = "xxxx"; (I put the password here)
// Create connection
$db = mysql_connect($servername, $username, $password);
// Check connection
if (!$db) { die("Connection failed: " . mysql_connect_error()); }
然后,我的upload.php文件如下:
<?PHP include(connect.php) ?>
<form id="avatar" name="avatar" method="post" action="submitAvatar.php" enctype="multipart/form-data">
ID:
<input type="text" id="memberId" name="memberId">
Upload Avatar:
<input type="file" onchange="load_image(this.id,this.value);" id="userAvatar" name="userAvatar">
<br><br>
<input type="submit" value="Update Avatar" id="updateAvatar" name="updateAvatar">
</form>
我的submitAvatar.php如下:
<?PHP include(connect.php);
if($_SERVER['REQUEST_METHOD'] == "POST" && $_POST['updateAvatar'] == 'Update Avatar') {
if($_POST['memberId']=="") {
echo "Member id is required";
} else {
$memberId = $_POST['memberId'];
$updtDate = date("Y-m-d : H:i:s", time());
$allowedExts = array("gif", "jpeg", "jpg", "png", "bmp");
$temp = explode(".", $_FILES["userAvatar"]["name"]);
if($_FILES['userAvatar']['size']>0) {
if (in_array(strtolower($temp[1]), $allowedExts)) {
$picNm = uniqid().".jpg";
$path="memberAvatars/".$picNm;
if(move_uploaded_file($_FILES['userAvatar']['tmp_name'],$path)) {
$sql = "UPDATE Avatars ". "SET name = $picNm ". "WHERE memberId = $memberId" ;
mysql_select_db('AvatarDB');
$retval = mysql_query( $sql, $db );
if(! $retval ) { die('Could not update data: ' . mysql_error()); }
echo "Updated data successfullyn";
mysql_close($db);
} else {
echo "Error1.";
}
} else {
echo "Invalid type.";
}
}
}
}
?>
有人知道我为什么会出现以下错误吗?
无法更新数据:用户'xxxx'@'localhost'的访问被拒绝(使用密码:NO)
提前谢谢!
以下是我对这个问题的看法。不需要将<?PHP include(connect.php) ?>
放在upload.php
中,除非您在那里实际执行了一个看起来不像的查询。它已经包含在submitAvatar.php
中。
我认为问题出在查询的语法或包含连接脚本的方式上。您可能需要在include中使用引号。
<?PHP include('connect.php') ?>
另外,尝试更改
$sql = "UPDATE Avatars ". "SET name = $picNm ". "WHERE memberId = $memberId" ;
至
$sql = "UPDATE Avatars SET name = $picNm WHERE memberId = $memberId";
或者,如果你想报价,正确的格式应该是。
$sql = "UPDATE Avatars SET name = '".$picNm."' WHERE memberId = '".$memberId"'";
编辑:
在仔细查看您的代码后,我认为问题就在这里:
mysql_select_db('AvatarDB');
$retval = mysql_query( $sql, $db );
看起来你已经把它们换了,试试
mysql_select_db('AvatarDB', $db);
$retval = mysql_query($sql);