我在這裏努力瞭解$ _GET的isset邏輯測試的邏輯。這實際上是練習的答案。
所以這是這一部分:
if(isset($_GET['status']) && in_array($_GET['status'], $options)){
$sql .= " WHERE status = ?";
$execute = array($_GET['status']);
}
我將不勝感激,如果答案是//內嵌,非常感謝。
1.)據我所知,我們正試圖查看狀態是否爲空,但爲什麼兩次$選項也是?
2.)爲什麼是$ sql分裂?爲什麼不把$ sql帶出來,如果已經用「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>
@FuzzyTree:不,它不。這是一個徹頭徹尾的語法錯誤。我猜它應該是'isset()' –
既然你永遠不能確定你從客戶端得到了什麼數據,你必須首先檢查你實際發送的一些數據是否被髮送:'if(isset($ _ GET ['狀態']))'只有那樣你才能真正使用它。 – arkascha
我也有一個錯誤,那就是爲什麼即時在這裏完全困惑,這是從我們的練習答案。 – erezT