我在这里努力尝试理解 $_GET 的 isset 逻辑测试的逻辑。这实际上是一个练习的答案。
所以是这部分:
if(isset($_GET['status']) && in_array($_GET['status'], $options)){
$sql .= " WHERE status = ?";
$execute = array($_GET['status']);
}
如果答案是//inline,我将不胜感激,非常感谢。
1.) 我知道我们正在尝试查看状态是否不为空,但为什么 $options 也要两次?
2.) 为什么 $sql 拆分?为什么不让 $sql 脱离 if 已经有了“WHERE status =?”
PHP 页面的其余部分在这里:
<?php # Exercise solution 1 $employees = ''; $execute = array(); $options = array(0,1); $db = new PDO('mysql:host=localhost;dbname=eshop;charset=utf8', 'root', ''); $sql = "SELECT firstName,lastName FROM employees"; if(isset($_GET['status']) && in_array($_GET['status'], $options)){ $sql .= " WHERE status = ?"; $execute = array($_GET['status']); } $query = $db->prepare($sql); $query->setFetchMode(PDO::FETCH_OBJ); $query->execute($execute); $result = $query->fetchAll(); foreach($result as $row){ $employees .= "{$row->firstName} {$row->lastName}<br/>"; } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Exercise solution 1</title> </head> <body> <strong>Employees list</strong> <a href="1.php">All</a> <a href="1.php?status=1">Status Active</a> <a href="1.php?status=0">Status Not Active</a> <br/><br/> <div class="result-list"><?= $employees; ?></div> </body> </html>
最佳答案
我很确定你在这里可能遗漏了一个函数 in_array
in_array($_GET['status'], $options)
$options
将包含 status
可能具有的所有有效值
关于php - 需要解释 $_GET 的 isset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33700375/