无法在PHP中更新图像Src
我正在尝试为我的网站创建个人资料图片功能。文件上载和图像显示功能工作正常,但不会将“我的表”中的“配置文件”列更新为图像名称 我的数据库名是intranet,表名是profile。以下是我的源代码:无法在PHP中更新图像Src,php,mysql,image,Php,Mysql,Image,我正在尝试为我的网站创建个人资料图片功能。文件上载和图像显示功能工作正常,但不会将“我的表”中的“配置文件”列更新为图像名称 我的数据库名是intranet,表名是profile。以下是我的源代码: <?php session_start(); $_SESSION['username']; ?> <?php if(isset($_POST['submit'])){ move_uploaded_file($_FILES['file']['
<?php session_start();
$_SESSION['username'];
?>
<?php
if(isset($_POST['submit'])){
move_uploaded_file($_FILES['file']['tmp_name'],"images/profile/".$_FILES['file']['name']);
$con = mysqli_connect("localhost","root","","intranet");
$q = mysqli_query($con,"UPDATE user SET profile = '".$_FILES['file']['name']."' WHERE username = '".$_SESSION['username']."'");
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="submit">
</form>
<?php
$con = mysqli_connect("localhost","root","","intranet");
$q = mysqli_query($con,"SELECT * FROM user");
while($row = mysqli_fetch_assoc($q)){
echo $row['Username'];
if($row['profile'] == ""){
echo "<img width='100' height='100' src='images/profile/default.jpg' alt='Default Profile Pic'>";
} else {
echo "<img width='100' height='100' src='images/profile/".$row['image']."' alt='Profile Pic'>";
}
echo "<br>";
}
?>
</body>
</html>
检查配置文件字段是否为varchar,或者检查images/profile文件夹中是否已有同名的图像。如果是,请在移动上载的文件之前尝试生成唯一的文件名 我通过在第9行的C:\IntranetBeta\test.php中运行echo Notice:Undefined index:username UPDATE user SET profile='Koala.jpg',其中username= 这段代码:
<?php session_start();
$_SESSION['username'];
?>
没有为该会话数组分配任何内容,因此需要将其分配给某个对象
如果它来自上一页并在那里分配,那么您需要检查它是否已设置以及分配给了什么
否则,您需要将其删除或为其分配某些内容
即:
另外,正如我在前面的评论中所指出的,在尝试查询之前,先放置您的连接
这是因为你没有在上面连接。将您的连接代码单独放置在所有代码之上。
你试过用明文打印查询吗?它符合预期吗?这是因为你没有超越它。将连接代码分别放在所有代码之上。在打开PHP标记后立即将错误报告添加到文件顶部,例如,这是因为您没有使用此$_会话['username']执行任何操作;它只是作为$_SESSION['username']放在那一行;而不是$_SESSION['username']=John Doe;举个例子。这将使您更难知道如何将其分配为,或者是否将其分配到其他地方。@user2812059这向我表明您的$\u会话设置不正确,因为用户名不作为密钥存在于其中。我建议首先考虑一下这个问题。profile字段是一个varchar,文件名在profile folder中是唯一的。顺便说一句,我认为您有一个很好的观点,可以将连接移到外部。我确信,我并没有解决这个问题,但我认为这会产生更好的代码!。尤其是因为OP使用它来选择页面。“不需要多余。”拉斯克拉特说得对,我在早些时候的评论中提到了他们的问题。是的,这就是我所指的。他们应该按照你的评论来做。@user2812059不客气。这将取决于您要将会话数组分配给哪个用户。有很多方法可以做到这一点,从上一个表单的POST数组,或者从DB获取。这取决于你。@user2812059干杯!请记住将其标记为已解决,否则它将保留在未解决类别中。这里是如何以防万一,然后返回到答案做同样的事情。这会告诉未来的访问者这个问题已经找到了解决方案。
<?php
session_start();
if(isset($_SESSION['username'])){
$_SESSION['username'] = "John Doe";
}
else{
$_SESSION['username'] = "Empty";
}
?>