2011-11-16 8 views
1

이전에 작동했지만 이전에 작동했던 일부를 포함하여 일부 사용자에게는 작동하지 않는 로그인 스크립트가 있습니다.SQL은 phpMyAdmin에서 작동하지만 웹 페이지 스크립트에서 잘못된 행 수를 반환합니다.

SQL은 항상 phpMyAdmin에서 작동하지만 일부 사용자의 경우 웹 페이지에서 항상 0 행을 반환합니다.

$query_str = 'SELECT id, username, level_access, active FROM users WHERE username = "'; 
$query_str .= mysql_real_escape_string($uname).'"'; 
$query_str .= ' AND password = "'.mysql_real_escape_string($pwd).'"'; 
echo $query_str. "<br/>"; 

$result = mysql_query($query_str); 
$num_result = mysql_num_rows($result); 
echo $num_result. "<br/>"; 

내가 어떤 변화를 테스트 상당한 시간을 소비하고, 내가 생각할 수있는 조합, 나는 따옴표를 다시 추가 변수 이름을 변경, 다른 변수를 삽입 식을 단순화 : 여기에 문제가있는 코드입니다. 각 변경 사항은 phpMyAdmin에서 출력 된 쿼리 문을 테스트했습니다. 다른 사용자, 삭제 된 사용자를 추가하고 다시 만들었습니다. 액세스 수준과 사용자 이름을 변경했습니다.

항상 나는 그들이 나는 다음과 같은 SQL을 생성하도록

마지막으로 내가 어디에 문을 제거 phpMyAdmin을 반환 경우에도, 항상 어떤 행을 반환하지 않는 로그인이 항상 다른 사람을 위해 작동하는 일부 사용자에 대해 같은 결과를 얻었다 성명 :

내 웹 페이지에서 이것은 얼마나 많은 사용자가 있더라도 항상 8 개의 행을 반환합니다. 8, 9 또는 10 명의 사용자가있는 경우 8 개의 행을 반환합니다. 사용자가 8 명 미만이되도록 사용자를 삭제했지만 phpMyAdmin 웹 페이지에 8 개의 행이 반환되어 매번 올바른 번호가 반환됩니다.

분명히 문제는 코드가 아닌 것 같습니다. 그래서 이것은 나의 전문성 이상이다. 이 문제의 원인은 무엇이며 어떻게 해결할 수 있습니까?

+1

PHP 코드와 phpmyadmin이 동일한 데이터베이스를 찾고 있습니까? –

+0

데이터가 맞습니까? 때로는 하나의 잘못된 값만큼 미묘한 것이 전체 결과를 던질 수 있습니다. 또한 PhpMyAdmin _ 및 _ MySQL Work Bench와 같은 다른 DB 도구를 사용해보십시오. –

답변

0

귀하의 MySQL 캐시 설정은 무엇입니까? 쿼리가 낡은 결과를 캐싱 할 수있는 것처럼 데이터베이스에있는 것보다 적은 수의 행이 8 개있을 때이를 리 트라이하는 것이 좋습니다. SELECT 문 다음에 SQL_NO_CACHE을 추가하여 캐시를 비활성화 할 수 있으므로 쿼리를 $query_str = 'SELECT SQL_NO_CACHE id, username, level_access, active FROM users';으로 변경하면 도움이됩니까?

+0

캐시 설정에 대해 알지 못하지만 제안을 시도했지만 여전히 8 행을 얻습니다. – user1047397

+0

음 .... http://stackoverflow.com/questions/181894/mysql-force-not-to-use-cache-for-testing-speed-of-query에 캐시를 가져 오는 것에 대한 다른 제안이 있습니다. 그곳에서 일하는 것을 찾을 수 있습니다. – mikel

+0

필자는 행을 인쇄하지 않았기 때문에 뭔가 알려줄 수밖에 없었다. 나는 지금하고있다. – user1047397

0

명시 적으로 쿼리되는 데이터베이스에 연결되어 있습니까?

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
mysql_select_db ('myDatabase' , $link); 

그런 다음 $link 핸들을 쿼리에 사용해야합니다.

$result = mysql_query($query_str, $link); 
+0

예 데이터베이스에 연결 중입니다. 하지만 난 그냥이 쿼리에 대한 잘못된 데이터베이스에 연결하는 것을 발견했습니다. 이상한 점은 틀린 데이터베이스에 연결하는이 쿼리와 연결을 수행하는 동일한 코드 행 (즉 동일한 코드 행이 아님)입니다. – user1047397

+0

사실 내 쿼리에 $ 링크를 사용하지 않았습니다. 내가 문제를 일으키는 문제에 추가했는데 "유효한 MySQL-Link 자원이 아닙니다"라는 오류가 발생합니다. 전체 웹 사이트의 다른 모든 쿼리가 올바르게 작동하고 있음에도 불구하고이 점에 유의하십시오. – user1047397

+0

@ user1047397 매우 이상한 ... 당신은 데이터베이스의 위치로 localhost를 대체 했습니까? (기본 포트가 아니라면 포트 번호도 바꿉니다.) mysql_user는 유효한 사용자이고 mysql_password는 사용자의 암호입니다. –

관련 문제