2012-07-23 2 views
0

저는 Stacked에서 다른 비슷한 질문을 보았습니다. 예제를 사용했습니다. 아래에 정수를 반환해야한다고 나와 있지만, 여전히 배열을 얻습니다.내 SELECT COUNT 쿼리는 정수가 아닌 배열을 반환합니다.

그래서 .. 어떻게 배열을 얻고 어떻게 정수를 얻을 수 있습니까?

function user_exists($username){ 
    $result = mysql_query("SELECT COUNT(username) FROM logins"); 

    // Verify it worked 
    if (!$result) echo mysql_error(); 

    $row = mysql_fetch_row($result); 

    // Should show you an integer result. 
    print_r($row); 


    } 

출력 내용 : "Array ([0] => 1)". 댓글은 정수 여야한다고 말합니다. 도움을 주시면 감사하겠습니다!

위의 코드는 테스트 목적에만, 실제로 SELECT COUNT의 값을 테스트하고 기능에 그것을 진정한 (또는 false) 부울을 반환하려고 스피 :

function user_exists($username){ 
    $query = mysql_query("SELECT COUNT (username) FROM `logins` WHERE `username`='$username'"); 
    return (mysql_result($query, 0)==1) ? true: false; 
    } 

하지만 $ 쿼리 VAR 하나의 값이 아닌 배열

+2

또한, 당신이 정말로 PDO 객체를 통해 마이그레이션해야합니다. MySQL에 접근 할 때 훨씬 더 안전합니다. – Fluffeh

+1

@Fluffeh 우수 포인트 (방금 언급하려고했습니다). @ 개빈 - [빨간색 상자] (http://uk.php.net/manual/en/function.mysql-connect.php) 참조)? mysql_ * 함수는 더 이상 사용되지 않습니다. 새로운 코드에 사용해야하는 이유는 없습니다.대신 준비된 문과 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/mysqli)로 전환하십시오. –

+0

@Fluffeh, Ricardo Altamirano : 성가 시게된다, 정말로 – zerkms

답변

8

한 열로 행을 반환하고 $row[0]을 사용하여 첫 번째 열의 값을 가져옵니다.

함수 이름에 의해 암시 된 것처럼 mysql_fetch_row은 결과 집합의 각 열에 대해 요소가있는 배열의 형태로 행을 반환해야합니다. PHP docs 가입일

:

반품 행이 더 이상없는 경우

이 수치 인출 행에 해당 문자열의 배열 또는 FALSE를 리턴 값.

mysql_fetch_row()는 지정된 결과 식별자와 연결된 결과에서 한 행의 데이터를 가져옵니다. 행은 배열로 반환됩니다. 리카르도 및 Fluffeh 의해 주석 같이

0. 오프셋 각 결과 열이 시작 오프셋 배열에 저장되어,이 인터페이스는 사용되지 않으며하면 PDO를 사용한다. PDO가 나오기 전에 PHP는 데이터베이스에 대한 통합 인터페이스가 없었기 때문에 프로젝트에서 데이터베이스를 전환하기가 정말 어려웠습니다. PDO를 사용하면 여러 데이터베이스를 쉽게 지원할 수 있으며 prepared statements은 SQL 주입 공격에 대한 코드의 보안을 강화합니다.

[업데이트]

덕분에, 아마도 MYSQL_ROW는 난 단지 테스트 목적을 위해 그것을 사용하는 가장 좋은 방법은 아닙니다. 실제로 결과를 mysql_result에 숫자로 넣으려고 시도하지만 배열이므로 SELECT COUNT는 원래 정수를 반환한다고 생각했을 때 배열을 반환한다고 생각합니다. 정말로 $ result = mysql_query ("SELECT COUNT")가 단일 값이되기를 바란다. 흠 ..? 당신이 정말로 정수로 값을 가져하려면

대신이를 사용할 수 있습니다

// $row = mysql_fetch_row($result); 
$row = mysql_result($result, 0, 0); // first row, first column 
+0

감사합니다. 아마도 mysql_row가 최선의 방법이 아니며 테스트 용도로만 사용되었습니다. 실제로 결과를 mysql_result에 숫자로 넣으려고 시도하지만 배열이므로 SELECT COUNT는 원래 정수를 반환한다고 생각했을 때 배열을 반환한다고 생각합니다. 정말로 $ result = mysql_query ("SELECT COUNT")가 단일 값이되기를 바란다. 흠 ..? – gavin

+0

대신 mysql_result ($ result, 0, 0)'을 사용할 수 있습니다. –

+0

고마워, 나는 이것을 시험 할 것이다. 하나의 질문이지만, SELECT COUNT는 어쨌든 단일 값을 반환하지 않으려 고합니다. 내가 읽은 곳이라면 그렇게 말하지만 나의 예에서는 그렇지 않다. – gavin