안녕하세요. 문자열 변수를 전달하지 않는 MySQL 쿼리에 문제가 있습니다.PHP는 문자열을 전달할 때 MySQL 쿼리 오류가 발생했습니다.
$pass
에 숫자 만 들어 있으면 제대로 작동합니다. 문자가 포함되어 있으면 Cannot execute the query
오류가 발생합니다.
예 :
는$pass=123456 //works fine
$pass=z23456 //cannot execute the query
$_SESSION['id']=$pass; //start session
if (isset($_SESSION['id'])) {
// Query database for user information.
$query = "SELECT RepName FROM RepTable WHERE RepNumber =
".$_SESSION['id']."";
$result = mysql_query ($query) OR die ('Cannot execute the query.');
$rinfo = mysql_fetch_array ($result);
$RepInfo = $rinfo[0];
데이터베이스에 RepNumber 어떤 종류의 당신이 MySQL과 연동하여 준비된 문을 사용한다, 그것은 안전 (예를 들어 SQL 주입을)입니까? –
디버깅 팁 :'OR die ("$ query"쿼리를 실행할 수 없습니다.);'- 개발에만 사용 - 프로덕션 환경에서는 절대 사용하지 마십시오. 예를 들어'$ pass' =''foo ''이면 SQL 문은 SELECT RepName FROM RepTable WHERE RepNumber = foo'를 읽는다는 것을 알 수 있습니다 -'foo'는 유효한 식별자 나 함수가 아닙니다. 번호는 따옴표로 묶어야합니다. RepNumber가 문자열 유형이라면 mgraph의 대답이 해결책입니다. RepNumber가 숫자 유형이면 $ pass를 먼저 확인해야합니다. – megaflop
덧붙여 말하면, mysql 확장의 사용은 권장되지 않습니다. 당신은 정말로 mysqli 또는 pdo 확장자를 사용하는 것을 고려해야한다. [자세한 내용은 여기를 참조하십시오] (http://uk.php.net/manual/en/mysqlinfo.api.choosing.php) – megaflop