我有以下语句来验证PHP中的空字段,它工作得很好:
if (isset($_SESSION['logged_in'])) {
if (isset($_POST['room'], $_POST['area'])) {
$room = $_POST['room'];
$area = $_POST['area'];
if (empty($room) or empty($area)) {
$error = 'Required!';
} else {
$query = $pdo->prepare('INSERT INTO apartments (apartments_room, apartments_area) VALUES (?, ?)');
$query->bindValue(1, $room);
$query->bindValue(2, $area);
$query->execute();
header('Location: index.php');
}
}我现在已经打开了更多的列在数据库中,因此也有更多的插入字段在html中进行验证。我的问题是,在这种情况下,当检查多个空字段时,我如何制定用于验证的if语句。
举个例子,这个代码不再工作了:
if (isset($_SESSION['logged_in'])) {
if (isset($_POST['room'], $_POST['area'], $_POST['rent'], $_POST['address'], $_POST['floor'], $_POST['city'], $_POST['freeFromDate'])) {
$room = $_POST['room'];
$area = $_POST['area'];
$rent = $_POST['rent'];
$address = $_POST['address'];
$floor = $_POST['floor'];
$city = $_POST['city'];
$freeFromDate = $_POST['freeFromDate'];
if (empty($room) || empty($area) || empty($rent) || empty($address) || empty($floor) || empty($city) || empty($freeFromDate)) {
$error = 'Required!';
} else {
$query = $pdo->prepare('INSERT INTO apartments (apartments_room, apartments_area, apartments_rent, apartments_address, apartments_floor, apartments_city, apartments_freeFromDate) VALUES (?, ?, ?, ?, ?, ?, ?)');
$query->bindValue(1, $room);
$query->bindValue(2, $area);
$query->bindValue(3, $rent);
$query->bindValue(4, $address);
$query->bindValue(5, $floor);
$query->bindValue(6, $city);
$query->bindValue(7, $freeFromDate);
$query->execute();
header('Location: index.php');
}
}这里的语法是怎么表达的?
谢谢!
发布于 2013-08-10 19:32:08
将or更改为||
if (empty($room) || empty($area) || empty($rent) || empty($address) || empty($floor) || empty($city)) {
$error = 'Required!';http://php.net/manual/en/language.operators.logical.php
发布于 2013-08-10 19:44:35
这就到了脚本的可维护性和可读性差将开始产生人为错误的阶段。
在脚本的顶部创建一个更容易阅读的数组,这样您就不必在脚本中到处寻找。
$expecteds = array('room'
, 'area'
, 'rent'
,'address'
);然后先失败:
foreach($expecteds as $expected){
if(!array_key_exists($expected, $_POST))
exit($expected . ' is required!');
}//从现在开始,你就知道预期的变量是存在的.
发布于 2013-08-10 19:44:36
OR的意思与PHP中的|相同。
您应该调试var以检查是否通过了这些
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE如果这样做,if语句将失败,因为empty将返回true。
https://stackoverflow.com/questions/18161414
复制相似问题