2011-08-14 5 views
-1

elseif 문이 작동하지 않는 경우 간단합니다.IF ELSE 문과 Select 쿼리가 작동하지 않습니다.

변수는 확인란 선택에서 전달됩니다.

이와 같이 사용하면 유형 선택을 위해서만 사용됩니다.

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 조건 후에 쿼리를 수행하십시오. 하나의 쿼리 만 수행합니다 (조건의 첫 번째 또는 두 번째 쿼리 문자열 사용). if 블록 내에서 $result=…; $nr=…;을 이동해야합니다.

+0

코드의 sqli 취약점도 확인하십시오. – knittl