我已经创建了一个更新Sql条目的代码,但是当您将值保留为空时,它会删除现有值。
<?php
$servername = "localhost";
$username = "root";
$password = "HahahNo";
$dbname = "DATA";
$id = $_POST["id"];
$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE MyGuests SET firstname='$firstname', lastname='$lastname', email='$email' WHERE id=$id";
if ($conn->query($sql) === TRUE) {
echo "Success";
} else {
echo "Error updating record: " . $conn->error;
}
?>
有没有办法不清除未填写的值?我是个新手。
答案 0 :(得分:3)
检查$_POST
是否包含值。
首先检查isset()
是否设置$_POST
值(已发布)。
然后检查字符串是否为空strlen()
:
if (!isset($_POST['firstname'] || strlen($_POST['firstname']) == 0) {
echo 'Please enter first name';
} else {
// Do your DB update
}
修改:自然empty()
更好,因为您只需要进行一次检查:
if (empty($_POST['firstname']) {
echo 'Please enter first name';
} ...
感谢@Fred -ii -
编辑II :正如@alex指出
if ($_POST['firstname']) {
echo 'Please enter first name';
} ...
中解释
答案 1 :(得分:1)
您正在寻找的是用户提供的数据的验证。您是对的 - 没有阅读表单说明的用户可能会导致意外的数据丢失。此外,malicious user或innocent child可能会因SQL注入而造成更多伤害。
首先检查您的字段是否符合最低要求。您可以验证电子邮件地址,邮政编码,电话号码,网址......但要回答您的问题,Daenu的答案是完美的。
一旦您满意,数据就会满足您的数据库&#39;要求,检查是否安全。剥去任何恶意SQL命令。您可以将预准备语句与PDO或MySQLi一起使用。
还要考虑数据的规范。每个字段的数据类型是字符串,整数还是浮点数?您的网页是什么字符集(UTF-8是一个安全的选择),因此您的数据到达了什么字符集?您的数据库是否匹配(UTF8MB4是一个很好的伴侣)?
答案 2 :(得分:1)
您可以在执行函数之前编写条件,
downloadedOn