[英]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.