2014-10-16 51 views
3

學習PHP並遇到一個我無法弄清楚的問題。我讀過PHP只有函數的作用域,所以我不確定爲什麼我的switch語句沒有改變變量的值。php:根據下拉列表更改變量的值

目標:根據用戶選擇的下拉列表更改mysql SELECT語句。

形式:

<form action="contacts_show.php" method="POST"> 
    <select name="grade" id="grade"> 
    <option value="all">All Levels</option> 
    <option value="elementary">Elementary</option> 
    <option value="middle">Middle</option> 
    <option value="senior">Senior</option> 
<input type="submit" name="browse" id="browse" value="Browse" /> 
</form> 

PHP(編輯以縮短代碼):

$levelSelected = $_POST['grade']; 

if ($levelSelected == "all") { 
    $querySelect = "SELECT * FROM teachers ORDER BY school ASC"; 
} else { 
    $querySelect = "SELECT * FROM teachers WHERE school LIKE %$levelSelected% ORDER BY school ASC"; 
} 

$query = $querySelect; 
$result = mysqli_query($connection, $query); 
confirm_query($result); 

的confirm_query功能,如果需要的話:

function confirm_query($result_set) { 
    if (!$result_set) { 
     die("Database query failed."); 
    } 
} 

當從 「所有級別」 掇選擇向下,代碼按預期運行。當選擇任何其他選項時,我的confirm_quaery函數聲明查詢失敗。

我不知道爲什麼變量的值沒有切換。

+3

'LIKE%elementary%'=>'LIKE'%elementary%''並且爲其他人做同樣的事情。你不檢查數據庫錯誤。如果這仍然不起作用,那麼這也是一個範圍問題。 – 2014-10-16 14:28:33

+0

你可以使用'mysqli_error'從mysqli得到確切的錯誤,或者你可以有mysqli拋出異常。 – jeroen 2014-10-16 14:30:36

+0

你試圖解析字符串不是整數,你應該得到一個錯誤。 請嘗試'%all%'而不是%all% – Azarus 2014-10-16 14:34:58

回答

2

要闡述我的意見:

變化LIKE %elementary%到=>LIKE '%elementary%',做了別人不一樣。

你需要用引號括模式匹配,並按照手冊: '大衛'

的mysql> SELECT LIKE'%D%v%';
mysql> SELECT 10 LIKE'1%';

您還沒有檢查數據庫錯誤。

添加or die(mysqli_error($connection))mysqli_query()

如果仍然無法正常工作,那麼它也是一個範圍問題。
傳遞連接到你的函數,做不是使它成爲全球。

相關問題