繁体   English   中英

PHP,MySQL更新表

[英]PHP, MySQL Update Table

我尝试设置一个脚本,当表单向PHP文件提交信息时,它将更新MySQL表。 但是我试图使它不更新数据库,如果发布为空/空。 但这不是更新表。

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
$nickname = $_POST['nickname'];
$user = $_POST['user'];

$enc_pass = md5($password);

$con=mysqli_connect("","","","");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
if (!isset($name)){
mysqli_query($con,'UPDATE members SET name="$name"
WHERE username="$user"');
}
if(!$email == ""){
mysqli_query($con,'UPDATE members SET username="$email"
WHERE username="$user"');
}
if(!$password == ""){
mysqli_query($con,'UPDATE members SET password="$enc_pass"
WHERE username="$user"');
}
if(!$nickname == ""){
mysqli_query($con,'UPDATE members SET nickname="$nickname"
WHERE username="$user"');
}
mysqli_close($con);
?>

为了安全起见,我已经删除了MySQL凭据。 谁能帮我这个?

问候驯服Timmah

我认为您的某些逻辑不正确。 例如:

if (!isset($name)) {
    mysqli_query($con,'UPDATE members SET name="$name" WHERE username="$user"');
}

这就是说“如果$name没有设置为任何值,请更新数据库中的名称”。 $name总是会被设置为某事 ,因为您在一开始就对其进行了初始化。 我认为您所需要的更多是:

if ($name != '')) {
    mysqli_query($con,'UPDATE members SET name="$name" WHERE username="$user"');
}

但是,请记住,您没有验证POST数据,因此很容易受到SQL注入攻击。 在执行数据库中的任何操作之前,始终将提交的数据视为不可信任并对其进行清理,例如:

$name = mysqli_real_escape_string($_POST['name'];

您的代码有很多错误,但我更正了一些。 尝试这个

   if (isset($name) and $name != ''){
       mysqli_query($con,'UPDATE members SET name="'.$name.'"
                          WHERE username="'.$user.'"');
                    }
   if($email != ""){
       mysqli_query($con,'UPDATE members SET username="'.$email.'"
                          WHERE username="'.$user.'"');
                   }
   if($password != ""){
       mysqli_query($con,'UPDATE members SET password="'.$enc_pass.'"
                          WHERE username="'.$user.'"');
                   }
   if($nickname != ""){
       mysqli_query($con,'UPDATE members SET nickname="'.$nickname.'"
                          WHERE username="'.$user.'"');
                   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM