Warning: mysqli_fetch_object() expects parameter 1 to be ..원인과 해결책?
본문
에러 내용
Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given in C:\AutoSet10\public_html\gnu54\qpass\admin_index.php on line 27
해당 코드
$sql = "select delete_limit from qpass_config";
$result = sql_query($sql);
$row = mysqli_fetch_object($result); // 27라인
구글링 해봤는데도 잘 모르겠네용. ㅜ
PS.
에러 내용 해석이 아래 맞나요?
저 라인의 현재 결과가 boolean 인데,
정상적인 건 매개변수가 하나여야 하며 그 매개변수는 mysqli_result 여야 한다?
에러 내용이 대략 이런 내용 맞는거죠? ㅋ 영어가 취약하다 보니..
!-->답변 6
실행을 섞어서 하지 않으시는게 좋을것 같습니다.
그누보드의 함수인
sql_query() 로 Result를 추출했으면
fetch 처리도
sql_fetch_array 로 하시는게 좋습니다.
$sql = "select delete_limit from qpass_config";
$result = sql_query($sql);
$row = mysqli_fetch_object($result); // 27라인
에서 보면
$row를 가지고 할일이 무엇인지에 따라 Fetch 하실 내용이 명확해야겠죠
qpass_config 의 delete_limit 를 확인하시려면
그것도 단번에 가져올 단건 (1 row)라면
$row = sql_fetch($sql);
로 구성하시는게 더 간결할듯 싶네요
$sql = "select delete_limit from qpass_config";
$row = sql_fetch($sql);
참고로 sql_fetch()는 결과행이 하나일때 사용하시면 되구요
sql_fetch_array()는 결과행이 여럿일때 사용하시면 됩니다.
저 에러코드는 디비 커넥트 선언 없거나 받지 못했을때 나오기도 합니다 .
제가 알기로는 mysqli_fetch_object()는
여러행의 컬럼을 불러들일 때는 가능하지만 단일 컬럼을 가져오지 못하는 걸로 알고 있습니다.
그래서 발생하는 오류 같습니다.
이부분에 대한 오류를 없애시려면 fetch_object()를 사용하시던지
try{
} catch() {
}
구문을 이용하면 오류 발생을 출력하지 않을겁니다.
많은 분들이 답변 주셨네요. 감사합니다.
지금 바로 하나하나 적용해 테스트해 보겠습니다. ^^
방금 플래토 님 방법으로 해보니 바로 에러가 사라지네요.
감사합니다.
다른 분들도 좋은 의견 주셔서 감사합니다.