2011-10-27 40 views
0

我傳遞變量,以我的page?title=fred頁面,但我想重定向到另一個頁面,如果它是錯誤的值(未在數據庫中)例如:fredd麻煩與傳遞有效變量來查詢


第一部分檢查變量是否爲空。這似乎在工作。

//get variable from title 
if(!isset($_GET['title']) || empty($_GET['title'])) { 
    echo "no variable"; 
} 
else { 
    $get_title = mysqli_real_escape_string($db, $_GET['title']); 
    $title = str_replace("-"," ", $get_title); 
} 


我無法檢查,如果我傳遞變量是在數據庫中,如果它不重定向到主頁。

$query = mysqli_query($db, "SELECT title FROM persons WHERE title = '$title'"); 
//check that variable is in the database 
if(!isset($query)){ 
    while($row = mysqli_fetch_assoc($query)){ 

    echo $row['title']; 

    } 
// mysqli_free_result($query); 
} 
else {echo "variable does not exist";} ?> 


有人可以告訴我什麼,我做錯了,如何解決呢?謝謝你,

回答

2
if(!isset($query)){ 

$query始終設置(您只需設置它),所以你想要的代碼永遠不會執行。

希望此相反:

if (!$query) { 
    echo "Query returned error"; 
} else if (mysqli_num_rows($query) < 1) { 
    echo "Variable does not exist"; 
} else { 
    while ($row = mysqli_fetch_assoc($query)){ 
    echo $row['title']; 
    } 
} 
+0

你讓它看起來很簡單。謝謝! – checkenginelight

1

isset($查詢)將永遠是真實的 - mysqli_query()總是返回一些東西,哪怕它只是一個布爾值false值。

$result = mysqli_query(..); 
if ($result === false) { 
    die(mysqli_error()); 
} 
if (mysqli_num_rows($result) == 0) { 
    echo "variable does not exist"; 
} else { 
    while(...) { 
     ... 
    } 
} 
+0

真正的問題,而不是sarky評論:你需要爲返回資源或布爾值的函數執行'$ result === false'嗎?我的理解是,任何資源,無論狀態如何,如果直接作爲布爾值進行測試,將始終評估爲「真」。 – DaveRandom

+0

這是一個很好的習慣。雖然在這種情況下,是的,這在其他地方是過分的(strpos是一個特別討厭的),這是非常重要的。 –

+0

夠公平,不能與此爭論。無論如何,我傾向於這樣做,因爲我已經被JSLint毆打成習慣了,並且已經進入我的PHP,但我只是想知道除了可讀性/最佳實踐之外是否有其他原因 - 這是是仍然只是'($ result)'的地方。 – DaveRandom