문제

모두, 간단한 질문입니다 (내가 생각하는 쉬운 수정이되어야합니다). 쿼리의 Where 문에 내부에 여러 개의 열이 포함 된 방법이 있습니까? 내 코드는 다음과 같습니다.

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass'";

내가하고 싶은 것은 Where (priv_level = '$ privlevel') 다음에 다른 열을 추가하는 것입니다. 그러나 어떻게 해야하는지 구문을 확신하지 못했습니다.

도와 주셔서 감사합니다!

도움이 되었습니까?

해결책

SQL에서 읽으십시오. 그러나 어쨌든, 그것을 추가하기 위해서 AND priv_level = '$privlevel' SQL의 끝까지.

PHP를 처음 접한다면 이것은 꽤 큰 단계일지도 모르지만, 나는 당신이 mysqli PHP의 클래스 도. 쿼리를 훨씬 더 안전하게 실행할 수 있습니다.

그렇지 않으면 여기에 더 안전한 방법이 있습니다.

$sql = "SELECT * FROM $tbl_name WHERE " .
       "username = '" . mysql_real_escape_string($myusername) . "' AND " .
       "pwd = '" . mysql_real_escape_string($pass) . "' AND " .
       "priv_level = '" . mysql_real_escape_string($privlevel) . "'";

다른 팁

가독성을 위해 래핑 :

$sql="
  SELECT * 
  FROM $tbl_name 
  WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'
";

다른 사람이 진술이 얼마나 위험한 지 경고 할 것입니다. :-) 생각한다 SQL 주입.

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";

사용하지 않는 경우 "시도해보십시오.

$sql='SELECT * FROM '.$tbl_name.' WHERE username=\''.$myusername.'\' and pwd=\''.$pass.'\' and priv_level=\''.$privlevel.'\'';
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' AND priv_level = '$privlevel'";

참고 사항 : 여기서 당신이하는 것처럼 보이는 것은 꽤 나쁜 연습입니다.

나는 당신이 그것을 Wher-clase에 추가해야한다고 생각합니다.

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";

음, 귀하의 쿼리는 이미 WHERE 절에서 여러 열을 사용하고 있습니다 :)

SQL 주입 문제를 제외하고 (조심하십시오) :

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level='$privlevel'";

그만큼 WHERE 절은 할 수 있습니다 AND 몇 가지 수표가 있으므로 두 개가없는 곳에 쉽게 3 개를 가질 수 있습니다. and priv_level='$priv_level' 끝에.

편집 : @Thorarin의 답변에 따르면, 이것은 SQL 쿼리를 구축하는 위험한 방법이며 매개 변수 바인딩은 더 안전합니다. WHERE 절.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top