gpt4 book ai didi

PHP、MySQL更新表

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:46 26 4
gpt4 key购买 nike

我尝试设置一个脚本,当表单向 PHP 文件提交信息时,它将更新 MySQL 表。但我试图让它在 Post 为空/空时不更新数据库。但它没有更新表格。

<?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 凭据。谁能帮我解决这个问题?

问候驯服蒂玛

最佳答案

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

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

意思是“如果 $name 没有设置任何值,更新数据库中的名称”。 $name 总是会被设置为something,因为您在开始时就对它进行了初始化。我认为您需要的更多是:

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

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

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

关于PHP、MySQL更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21490229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com