2013-04-17 2 views
0

나는 코드가있다. WHERE 절없이이 코드를 사용하면 테이블의 모든 사용자가 예상대로 표시됩니다. 그러나 WHERE 절을 사용하면 아무 것도 표시되지 않습니다.mysqli가 Select 문을 실행하지 않는다.

무엇이 원인 일 수 있으며 어떻게 해결할 수 있습니까?

감사합니다.

+0

where 절과 일치하는 사람이 없을 수 있습니다! – rahularyansharma

+0

사용자 이름이 '?'인 사용자가 있습니까? – Daanvn

+0

예, 조건과 일치하는 사용자가 있습니다. –

답변

0

코드에 중대한 오류가 많이 발생하며 그 중 일부는 문제의 원인 일 수 있습니다. 그러나 그럼에도 불구하고 그들은 모두 응용 프로그램 기능의 내부

  1. 결코 연결 공동 데이터베이스

    을 수정해야합니다. 부트 스트랩 파일의 어딘가에 한 번 연결하고 모든 응용 프로그램에서 단일 연결을 사용하십시오.
  2. 데이터베이스 상호 작용에 htmlentities를 사용하지 마십시오. 데이터를 쉽게 망칠 수 있습니다.
  3. 항상 오류를 확인하십시오.
  4. mysqli를 사용하지 마십시오. 사용할 수 없습니다. 대신 PDO를 사용하십시오. 여전히 작동하지 않는 경우

    $dsn = "mysql:host=DBHost;dbname=DBName;charset=utf8"; 
    $opt = array(
        PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC 
    ); 
    $pdo = new PDO($dsn,$DBUser, $DBPass, $opt); 
    
    function requestUser($user) { 
        global $db; 
    
        $sql = "SELECT `user_name` FROM `users` WHERE user_name=?"; 
        $stmt = $db->prepare($sql); 
        $stmt->execute(array($user)); 
        return $stmt->fetchColumn(); 
    } 
    echo requestUser($user); 
    

, 데이터/값 뭐가 잘못 됐는지 알아/phpMyAdmin을 콘솔에서 실행하려고 다음 그것을

$sql = "SELECT `user_name` FROM `users` WHERE user_name='$user'"; 
    var_dump($sql); 

이 방법을 확인하고

+0

힌트를 가져 주셔서 감사합니다. 내가 게시 한 기능은 테스트 용입니다. 내 응용 프로그램에서 DB 연결은 부트 스트랩에 설정됩니다. 당신이 내게 준 코드는 PDO 방식을 사용하고 서버에서 사용할 수 없기 때문에 PDO를 사용할 수 없습니다 ... 그리고 변경할 수 없습니다. –

+0

DB에 WHERE 절과 일치하는 사용자가 있습니다. –

+0

MySQL 5+가 설치된 서버에서 코드를 테스트 한 결과 작동하고 있습니다. 서버에서이 작업을 MySQL 4.1.22 (phpManual에 명시된 4.1 이상)에서 수행해야합니다. 이것이 원인 일 수 있습니까? –

관련 문제