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
'Development Tip' 카테고리의 다른 글
CSS : 중앙 블록이지만 내용을 왼쪽에 정렬 (0) | 2020.11.26 |
---|---|
std :: string 설정 여부를 확인하는 방법은 무엇입니까? (0) | 2020.11.26 |
두 필드 값으로 PHP 정렬 배열 (0) | 2020.11.26 |
.bashrc에 추가 파일 포함 (0) | 2020.11.26 |
C #에서 목록을 회전하는 가장 쉬운 방법 (0) | 2020.11.26 |