2011-08-14 45 views
-1

如果elseif語句似乎不工作,那麼我有這個簡單的例子。如果ELSE語句和選擇查詢不起作用

變量從複選框中選擇傳遞。

如果像這樣使用,它只適用於類型選擇。

如果我使用if + if語句,它會顯示第二個選擇的結果。

任何想法?如果第一if分支沒有返回true

$man=$_GET['m']; 
$wom=$_GET['w']; 
$chd=$_GET['c']; 
$type1=$_GET['tip1']; 
$type2=$_GET['tip2']; 
$type3=$_GET['tip3']; 
$link=mysql_connect ("localhost", ".............", ".........") 
    or die("Nu s-a putut face conectarea la serverul SQL!"); 
mysql_select_db("......") or die("Nu s-a putut selecta baza de date!"); 

if (($type1)||($type2)||($type3)) 
{ 
$q="SELECT * FROM biju WHERE tip like '%$type1%' or tip like '%$type2%' or tip like '%$type3%'"; 
} 

elseif (($man)||($wom)||($chd)) 
{ 
$q="SELECT * FROM biju WHERE gen like '%$man%' or gen like '%$chd%' or gen like '%$wom%'"; 
}; 


$result=mysql_query($q); 
$nr=mysql_numrows($result); 
+0

示例代碼容易受到[SQL注入](http://unixwiz.net/techtips/sql-injection.html)的影響,這是非常嚴重的[安全風險](http://bobby-tables.com/)。爲了解決這個問題,從過時的mysql擴展名切換到[PDO](http://php.net/PDO)並使用[prepared statements](http://www.php.net/PDO.prepared-statements),將值作爲參數傳遞給語句,而不是直接將它們插入到字符串中。如果您需要PDO教程,請嘗試[「用PHP和PDO編寫MySQL腳本」](http://www.kitebird.com/articles/php-pdo.html)。您保存的網站可能只是您自己的網站。 – outis

回答

1

else if分支纔會執行。那就是if+elseif的工作原理。

在您的if條件之後,您執行查詢。你只做一個查詢(從條件中查詢第一個或第二個查詢字符串)。您必須在012塊區域內移動$result=…; $nr=…;

+0

請注意代碼中的sqli漏洞 – knittl