php - 有没有办法让选择表单在为空时不做任何事情?
问题描述
我正在尝试制作一个提交到数据库的选择表单,但问题是当未选择选择时,它仍会将空值提交到数据库。有没有办法在单击提交按钮或重新加载页面时忽略空的选择表单?
这是我一直在处理的代码
<?php
//DB Connection
$mysqli = new MySQLi('localhost','root','','mrbs');
$resultSet = $mysqli->query("SELECT * FROM mrbs_users");
//White board Current PIC
$wb_current_pic = $mysqli->query("SELECT * FROM mrbs_room_pic WHERE id='1'");
$wb_search_pic = $wb_current_pic->fetch_assoc();
$wb_pic = $wb_search_pic['name'];
?>
<form action="" method="post">
<div>
White Board (Current PIC : <?php echo("$wb_pic");?>)
<div>
<select name="white_board">
<?php
//echo "<option value=''>--set---</option>";
echo "<option value='' disabled selected>---set---</option>";
while($rows = $resultSet->fetch_assoc()){
$username = $rows['name'];
$user_email = $rows['email'];
echo "<option value='$user_email $username'>$username</option>";
}
?>
</select><br>
</div>
</div>
<input type="submit" name="button" value="Submit"/>
</form>
<?php
$wb_str = $_POST['white_board'];
//string processing
$wb_arr = explode(" ",$wb_str);
$wb_pic_email = $wb_arr['0'];
$wb_pic_name = $wb_arr['1'];
echo '<b>The PIC Adresses:</b>' .'<br>' .
$wb_pic_email . " " .$wb_pic_name .'<br>';
//UPDATE DB
$ex_query_wb = "UPDATE mrbs_room_pic SET name = '$wb_pic_name', email = '$wb_pic_email' WHERE id ='1'";
mysqli_query($mysqli,$ex_query_wb);
?>
根据代码,我做错了吗?还是有更好的方法来做到这一点?
解决方案
您应该将数据库查询包装在一个检查字符串是否为空的子句中,例如
// Use trim to remove any whitespace
if (trim($_POST['white_board']) === '') {
// Tell the user to check their data
} else {
// Do query...
}
在相关说明中,我还建议查看清理和验证用户输入,并考虑使用PDO而不是 mysqli_query,因为它可以更好地防止 SQL 注入。您的查询非常容易受到攻击。
推荐阅读
- php - CodeIgniter 3 URI 参数和 404 页
- nuget - NuGet pack 命令在 & 字符 (&) 上失败
- c++ - 如何用零填充 3D 数组?
- docker - 如何将 Jenkins 环境变量注入 pom.xml
- session - 如何验证 ColdFusion .cfc 页面中的有效会话和会话数据?
- c++ - 在 c++17 中过滤类型的元组
- javascript - 获取图像尺寸并将它们应用于另一个图像
- mysql - 存储过程无法按我的意愿工作
- node.js - 将 PDF 上传到 Amazon S3 并在浏览器中显示
- html - 使用高级逻辑查询 Html 层次结构