Php UPDATE行功能

时间:2015-04-24 18:27:32

标签: php mysql session

我正在尝试允许用户上传我的网站的个人资料图片。文件上传部分工作正常(虽然没有什么能阻止他们上传非图像文件)。但是,我无法更新"个人资料"在mysql数据库中的行。我认为它与$ _SESSION [' user_id']有关,但我不确定。任何想法为什么它不会更新行?

<?php
if(isset($_POST['submit'])){
$temp = explode(".",$_FILES["file"]["name"]);
$newfilename = ('ProfileImage') . rand(1,99999) . '.' .end($temp);
move_uploaded_file($_FILES['file']['tmp_name'],"images/profile/" . $newfilename);
            $con = mysqli_connect("localhost","root","","testsite");
            $q = mysqli_query($con,"UPDATE user SET profile = '".$newfilename."' WHERE username = '".$_SESSION['user_id']."'");
}
 ?>
         <form action="" method="post" enctype="multipart/form-data" name="">
                    <input type="file" name="file" required>
                    <input type="submit" name="submit" value="Update Image">

            </form>

万一你需要看到这个,这就是&#34; functions.php&#34;定义$ _SESSION [&#39; user_id&#39;]的页面:

<?php

@session_start();

function loggedin(){
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])){
return true;
} else {
return false;
}
}

function getuser($id, $field){
$query = mysql_query("SELECT $field FROM user WHERE UserID='$id'");
$run = mysql_fetch_array($query);
return $run[$field];

}

?>

1 个答案:

答案 0 :(得分:0)

我假设你的错误在这里:

$q = mysqli_query($con,"UPDATE user SET profile = '".$newfilename."' WHERE username = '".$_SESSION['user_id']."'");

它应该是这样的:

$q = mysqli_query($con,"UPDATE user SET profile = '".$newfilename."' WHERE UserID = '".$_SESSION['user_id']."'");

看起来您使用用户名切换了UserId。

当涉及到你应该设置$_SESSION['user_id']的页面时,你在这里显示的代码没有这样的东西。

它定义了两个函数,但没有调用它们,也没有为user_id赋值。

首先,如上所示更新查询,然后执行$ _SESSION的var_dump,看看是否在其中存储了任何内容。如果不是,您需要返回几步,并确保实际设置了会话变量。