문제
모두, 간단한 질문입니다 (내가 생각하는 쉬운 수정이되어야합니다). 쿼리의 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
절.