试试这样,现在,所有字段都是必需的,所以如果用户没有填写所有字段,则不会将数据存储到数据库中。
但是只在你的小型家庭应用程序上使用它,不要把它放在生产服务器中,因为它仍然很容易被注入。
if(isset($_POST['phone'])
&& isset($_POST['tagline'])
&& isset($_POST['activity'])
&& isset($_POST['about'])){
$phone = $_POST['phone'];
$tagline = $_POST['tagline'];
$activity = $_POST['activity'];
$about = $_POST['about'];
$date=date('d-m-y');
$status='ok';
$con=mysqli_connect("localhost","root","","database");
mysqli_query($con,"UPDATE owners
SET phone='$phone', tagline='$tagline',status='$status',activity='$activity',about='$about',date='$date'
WHERE username='deiin'");
mysqli_close($con);
}
或者像这样,activity 和 about 将是可选的:
if(isset($_POST['phone'])
&& isset($_POST['tagline']){
$phone = $_POST['phone'];
$tagline = $_POST['tagline'];
if(isset($_POST['activity'])) $activity = $_POST['activity'];
else $activity = '';
if(isset($_POST['about'])) $about = $_POST['about'];
else $about = '';
$date=date('d-m-y');
$status='ok';
$con=mysqli_connect("localhost","root","","database");
mysqli_query($con,"UPDATE owners
SET phone='$phone', tagline='$tagline',status='$status',activity='$activity',about='$about',date='$date'
WHERE username='deiin'");
mysqli_close($con);
}
但同样,请注意这段代码中存在巨大的安全漏洞,所以不要将它放在生产服务器上。如果有人在表单中写了 ' 引号,它将被插入到 sql 查询中,并且它将是那里的结束引号,因此引号后面的任何内容都将被解释为 sql 的命令。这样,周围的每个小丑都可以在一秒钟内删除您的整个数据库。使用 mysqli_real_escape_string() 或准备好的语句
编辑:如何使用 mysqli_real_escape_string():
而不是例如$phone = $_POST['phone'];
,您将它包含在 mysql_real_escape_string() 中,如下所示:
$phone = mysql_real_escape_string( $_POST['phone'] );
再简单不过了,不是吗?:)
并记得在查询中引用所有内容,就像你做的那样:
UPDATE owners SET phone= ---> '$phone' <--- /*those quotes are
important for it to work, remember to keep them there */
我不想解释准备好的语句,因为过程语法很奇怪,而 OOP 语法对你来说可能看起来更奇怪。