Development Tip

MySQL 결과가 PHP에서 반환되었는지 확인하는 가장 좋은 방법은 무엇입니까?

yourdevel 2020. 11. 26. 19:58
반응형

MySQL 결과가 PHP에서 반환되었는지 확인하는 가장 좋은 방법은 무엇입니까?


쿼리에서 결과가 반환되었는지 확인하고 확인하는 가장 좋은 방법을 찾고 있습니다. 코드의이 부분을 많이 작성하고 때로는 오류가 발생하고 때로는 그렇지 않은 것 같습니다.

예를 들어,이 쿼리를 실행하여 새 사용자 이름을 데이터베이스에 삽입하기 전에 사용자 이름이 있는지 확인합니다.

$result = mysql_query("SELECT * FROM ...");

그런 다음 결과가 반환되었는지 확인하고 싶습니다. 한 가지 방법은 다음과 같습니다.

if (!$result) { PERFORM ACTION }

첫 번째 방법이 작동하지 않으면 때때로 다음과 같이됩니다.

if (mysql_num_rows($result)==0) { PERFORM ACTION }

그런 다음 요 전에 이런 식으로 할 수 있다는 것을 알았습니다.

list($total) = mysql_fetch_row($result);
if ($total==0) { PERFORM ACTION }

이를 수행하는 가장 좋은 방법은 무엇입니까?


if (mysql_num_rows($result)==0) { PERFORM ACTION }

PHP 5 및 7 이상에서는 mysqli를 사용합니다.

if (mysqli_num_rows($result)==0) { PERFORM ACTION }

이것은 내 투표를 얻습니다.

OP 가정 쿼리가 오류를 반환하지 않으므로 이것이 방법 중 하나입니다.


이를 수행하는 한 가지 방법은 무엇이 mysql_num_rows반환 되는지 확인하는 것 입니다. 최소한의 완전한 예는 다음과 같습니다.

if ($result = mysql_query($sql) && mysql_num_rows($result) > 0) {
    // there are results in $result
} else {
    // no results
}

그러나 반환 값을 확인하고 오류로 인해 발생할 수 mysql_query있는 경우 적절하게 처리하는 것이 좋습니다 false. 아마도 mysql_error어딘가에 오류를 호출 하고 기록함으로써.


데이터를 얻기 위해 쿼리를 수행 할 때마다 객체로 반환됩니다. 그런 다음 우리 대부분은 행을 쉽게 반복하기 위해 배열로 변환합니다. PHP에서 "empty ()"함수는 배열이 비어 있는지, 즉 데이터가 없는지 확인하는 데 사용됩니다. 따라서 다음과 같이 수행하여 쿼리의 반환 된 배열 표현이 비어 있지 않은지 확인할 수 있습니다.

if(!empty($result)){
           //DO STUFF
}

처리하기 전에 결과 변수의 TYPE을 테스트하는 것보다 더 논리적 인 것은 무엇입니까? 'boolean'또는 'resource'유형입니다. mysqli_num_rows와 함께 매개 변수에 부울을 사용하면 함수가 리소스를 예상하기 때문에 경고가 생성됩니다.

$result = mysqli_query($dbs, $sql);

if(gettype($result)=='boolean'){ // test for boolean
    if($result){  // returned TRUE, e.g. in case of a DELETE sql  
        echo "SQL succeeded"; 
    } else { // returned FALSE
        echo "Error: " . mysqli_error($dbs);
    } 
} else { // must be a resource
    if(mysqli_num_rows($result)){

       // process the data    

    }
    mysqli_free_result($result);  
 }

위의 모든 옵션 중에서

if (mysql_num_rows($result)==0) { PERFORM ACTION }

아래와 같이 결과를 확인

if (!$result) { PERFORM ACTION }

mysql_error가 매우 효과적으로 발생하면 오류가 발생하면 이는 사실입니다. 그러면 중복 된 사용자 이름을 입력 할 수 있습니다.


함께 하나를 사용 mysql_fetch_row, SELECT를 들어, SHOW, DESCRIBE "때문에 설명하고 결과 집합,는 mysql_query ()를 돌려 다른 문은 오류에 성공 자원 또는 FALSE를 반환합니다.

다른 유형의 SQL 문, INSERT, UPDATE, DELETE, DROP 등의 경우 mysql_query ()는 성공하면 TRUE를, 오류가 있으면 FALSE를 반환합니다. "


일반적으로 내가 사용 ===( 트리플 같음 )하고 __LINE__, __CLASS__내 코드에서 오류를 찾을 수 :

$query=mysql_query('SELECT champ FROM table')
or die("SQL Error line  ".__LINE__ ." class ".__CLASS__." : ".mysql_error());

mysql_close();

if(mysql_num_rows($query)===0)
{
    PERFORM ACTION;
}
else
{
    while($r=mysql_fetch_row($query))
    {
          PERFORM ACTION;
    }
}

$result = $mysqli->query($query);
if($result){
    perform action
}

이게 내가하는 방법이고, 당신은 또한 거기에 주사위를 던질 수 있습니다 ...


$result이 유효하지 않은 경우에도 작업을 수행하려면 다음을 수행하십시오 .

if(!mysql_num_rows($result))
    // Do stuff

This will account for a 0 and the false that is returned by mysql_num_rows() on failure.


mysqli_fetch_array() returns NULL if there is no row.

In procedural style:

if ( ! $row = mysqli_fetch_array( $result ) ) {
    ... no result ...
}
else {
    ... get the first result in $row ...
}

In Object oriented style:

if ( ! $row = $result->fetch_array() ) {
    ...
}
else {
    ... get the first result in $row ...
}

$connect = new mysqli('localhost', 'user', 'password', 'db');
$result = $connect->query("select * from ...");
$count=$result->num_rows;
if(empty($count)){
echo"Query returned nothing";
}
else{
echo"query returned results";
} 

if (mysql_num_rows($result)!=0) { PERFORM ACTION } 

This way you check and act if a result is positive, ( you have a record in your DB that matches your query) , the other way (==0) you performed the action when no result was given.


if (mysql_num_rows($result)>0) { PERFORM ACTION }
if ($result) { PERFORM ACTION }

참고URL : https://stackoverflow.com/questions/4286586/best-way-to-check-if-mysql-results-returned-in-php

반응형