【发布时间】:2018-12-07 00:11:55
【问题描述】:
我有这个插入语句,我希望防止插入项目值为空的行
<?php
require_once 'app/helpers.php';
session_start();
$error = '';
$link = mysqli_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB);
mysqli_set_charset($link,"utf8");
$id = $_SESSION['user_id'] ;
$type = $_SESSION['user_rule'];
if($_POST) {
$name = $_POST['name'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$prod = $_POST['prod'];
$for = $_POST['for'];
$s_date = $_POST['s_date'];
$s_time = $_POST['s_time'];
$e_date = $_POST['e_date'];
$e_time = $_POST['e_time'];
$item1 = $_POST['itm1'];
$item2 = $_POST['itm2'];
$item3 = $_POST['itm3'];
$item4 = $_POST['itm4'];
$item5 = $_POST['itm5'];
$item6 = $_POST['itm6'];
$item7 = $_POST['itm7'];
$item8 = $_POST['itm8'];
$notes = $_POST['notes'];
if (empty($prod)) {
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> מי מפיק את כל הכיף הזה? בבקשה לרשום </div>';
} elseif (empty($for)) {
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> כן? למי הציוד הולך בבקשה? </div>';
} elseif (empty($s_date)) {
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> מתי מתחיל כל הכיף הזה? </div>';
} elseif (empty($s_time)) {
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> באיזה שעה מתחיל הכיף?</div>';
} elseif (empty($e_date)) {
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> מתי נגמר הכאב ראש הזה?</div>';
} elseif (empty($e_time)) {
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> באיזה שעה נגמר הכאב ראש? שנדע לקחת כדור </div>';
} else {
if (!empty($item1)) {
$rent = "INSERT INTO rent (u_name,u_id,mail,phone,prod,rent_for,start_d,start_t,end_d,end_t,item,user_type,notes)
VALUES
('$name','$id','$email','$tel','$prod','$for','$s_date','$s_time','$e_date','$e_time','$item1','$type','$notes') ";
mysqli_query($link, $rent);
$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> הזמנתך בוצעה - עכשיו חכה בסבלנות אל תאכל את הראש </div>';
}
if (!empty($item2)){
$rent = "INSERT INTO rent (u_name,u_id,mail,phone,prod,rent_for,start_d,start_t,end_d,end_t,item,user_type,notes)
VALUES
('$name','$id','$email','$tel','$prod','$for','$s_date','$s_time','$e_date','$e_time','$item2','$type','$notes') ";
mysqli_query($link, $rent);
$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> הזמנתך בוצעה - עכשיו חכה בסבלנות אל תאכל את הראש </div>';
}
if (!empty($item3)){
$rent = "INSERT INTO rent (u_name,u_id,mail,phone,prod,rent_for,start_d,start_t,end_d,end_t,item,user_type,notes)
VALUES
('$name','$id','$email','$tel','$prod','$for','$s_date','$s_time','$e_date','$e_time','$item3','$type','$notes') ";
mysqli_query($link, $rent);
$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> הזמנתך בוצעה - עכשיו חכה בסבלנות אל תאכל את הראש </div>';
}
if (!empty($item4)){
$rent = "INSERT INTO rent (u_name,u_id,mail,phone,prod,rent_for,start_d,start_t,end_d,end_t,item,user_type,notes)
VALUES
('$name','$id','$email','$tel','$prod','$for','$s_date','$s_time','$e_date','$e_time','$item4','$type','$notes') ";
mysqli_query($link, $rent);
$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> הזמנתך בוצעה - עכשיו חכה בסבלנות אל תאכל את הראש </div>';
}
if (!empty($item4)){
$rent = "INSERT INTO rent (u_name,u_id,mail,phone,prod,rent_for,start_d,start_t,end_d,end_t,item,user_type,notes)
VALUES
('$name','$id','$email','$tel','$prod','$for','$s_date','$s_time','$e_date','$e_time','$item4','$type','$notes') ";
mysqli_query($link, $rent);
$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> הזמנתך בוצעה - עכשיו חכה בסבלנות אל תאכל את הראש </div>';
}
if (!empty($item5)){
$rent = "INSERT INTO rent (u_name,u_id,mail,phone,prod,rent_for,start_d,start_t,end_d,end_t,item,user_type,notes)
VALUES
('$name','$id','$email','$tel','$prod','$for','$s_date','$s_time','$e_date','$e_time','$item5','$type','$notes') ";
mysqli_query($link, $rent);
$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> הזמנתך בוצעה - עכשיו חכה בסבלנות אל תאכל את הראש </div>';
}
if (!empty($item6)){
$rent = "INSERT INTO rent (u_name,u_id,mail,phone,prod,rent_for,start_d,start_t,end_d,end_t,item,user_type,notes)
VALUES
('$name','$id','$email','$tel','$prod','$for','$s_date','$s_time','$e_date','$e_time','$item6','$type','$notes') ";
mysqli_query($link, $rent);
$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> הזמנתך בוצעה - עכשיו חכה בסבלנות אל תאכל את הראש </div>';
}
if (!empty($item7)){
$rent = "INSERT INTO rent (u_name,u_id,mail,phone,prod,rent_for,start_d,start_t,end_d,end_t,item,user_type,notes)
VALUES
('$name','$id','$email','$tel','$prod','$for','$s_date','$s_time','$e_date','$e_time','$item7','$type','$notes') ";
mysqli_query($link, $rent);
$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> הזמנתך בוצעה - עכשיו חכה בסבלנות אל תאכל את הראש </div>';
}
if (!empty($item8)){
$rent = "INSERT INTO rent (u_name,u_id,mail,phone,prod,rent_for,start_d,start_t,end_d,end_t,item,user_type,notes)
VALUES
('$name','$id','$email','$tel','$prod','$for','$s_date','$s_time','$e_date','$e_time','$item8','$type','$notes') ";
mysqli_query($link, $rent);
$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> הזמנתך בוצעה - עכשיו חכה בסבלנות אל תאכל את הראש </div>';
}
}
}
?>
<?= $error ?>
如何防止插入 item1 或 item2 或 item3 值为空的每一行?并仅插入项目值不为空的行?
我现在得到的结果是我的数据库表中有 8 行,项目列中有空单元格
【问题讨论】:
-
旁注:你让自己对 SQL 注入开放;使用准备好的语句。
-
这仅用于测试代码,仅用于练习代码
-
if($_POST){你一开始就是这样,但之后尝试检查empty()。我会首先摆脱if($_POST){并首先检查空字段,然后查询并且不允许您的数据库中存在空/NULL 值,反之亦然。 -
你不应该练习糟糕的代码。练习使用准备好的语句
-
不要养成坏习惯。习惯往往会在以后跟随你,并且可能会在“你知道什么”中咬你;-)