2014-12-28 2 views
0

브렛 m이 "누락 된 설명서"를 연구했습니다. 그것의 구식. I.ve는 mysql func을 대체했습니다. 그게 문제가 아니야. preg 일치를 사용하여 SQL 명령과 일치하는 if 문을 실행합니다. 그 전에 var를 true로 설정합니다. preg match가 match를 반환하면 var가 false로 변경됩니다. If가 실행되지 않습니다. 스크립트는 mysqli_fetch를 실행합니다. 도와주세요. 대신 if 만, 사례 중 하나에 $return_rows 업데이트 직접 정규식 일치하는 결과를 할당하는 사용preg_match가 var를 false로 변경하지 않는 경우

$return_rows=true; 
If(preg_match("/^\s*(CREATE|INSERT|UPDATE|DELETE|DROP)/i", $query_text)) 
{ 
    $return_rows=false; 
} 
If($return_rows) 
{ 
    While($row=mysqli_fetch_row($result)){ echo $row[0]; } 
} 
else{ echo "query processed"; } 
mysqli_close($u); 

답변

-1

:

$return_rows = !preg_match("/^\s*(CREATE|INSERT|UPDATE|DELETE|DROP)/i", $query_text); 

여기 !는 부정이다. 대신에 더 적절한 변수 이름을 사용할 수도 있습니다.

그 다음 행을 가져 오기 위해 당신의 if 수표를 사용하거나 다른 메시지를 인쇄 :
if ($return_rows) { 
    // fetch rows 
} 
else { 
    // no fetching 
} 

가 대신 mysqli의 PDO를 사용하는 것이 좋습니다. 매개 변수 바인딩을 사용하면 순환이 적습니다.

+0

없이 작업을 계속할 수 있습니다. 내가 선택 진술에 갈 수 없어. 이 스크립트는 연습입니다. 나는 성냥 예식을 알아 내야 만한다. Im runnig wamp sever/win7x64. 이것은 버그 일 수 있습니까? –

0

SELECT 검색어 만 포함하면됩니다. 원인 SELECT은 데이터베이스에서 데이터를 요청하는 주요 쿼리입니다.

if(strtolower(substr(trim($query_str)) , 0, 6) == "select"){ 
    // SELECT query is being requested 
    while($row=mysqli_fetch_row($result)){ echo $row[0]; } 

else{ echo "query processed"; } 

mysqli_close($u); 

지금, 당신은 여전히 ​​일치 레그로 돌아 행을 지정하는 행을 가져 오기 위해 계속 실행 문제

관련 문제