데이터베이스 작업에 PHP를 사용하는 경우 오류가 발생하는 일반적인 현상 중 하나입니다. 그 중에서 "MySQLI_RESULT가 아닌 객체에서 메소드를 호출"오류는 일반적으로 데이터베이스 쿼리 결과 처리와 관련이 있습니다. 이 오류의 원인을 분석하고이를 해결하는 방법에 대한 아이디어를 제공해 봅시다.
PHP에서 데이터베이스 작업에 MySQLI 확장 기능을 사용할 때 일반적으로 쿼리를 실행하고 MySQLI_RESULT 객체 인 데이터베이스에서 결과 세트를 얻을 것으로 예상됩니다. 이 개체는 일련의 메소드를 사용하여 쿼리 결과에 액세스 할 수 있습니다.
예를 들어 다음 SQL 쿼리를 실행하십시오.
$sql = "SELECT * FROM users WHERE id = 1";
$result = $mysqli->query($sql);
$ result 변수는 mysqli_result 객체 여야합니다. 쿼리가 성공하면 쿼리 데이터를 얻기 위해 계속 사용할 수 있습니다.
$row = $result->fetch_assoc(); // 데이터 라인을 얻으십시오
그러나 경우에 따라 $ 결과는 mysqli_result 유형이 아니라 다른 객체 또는 변수 일 수 있습니다. 현재 "mysqli_result가 아닌 객체에서 메소드를 호출"과 같은 오류 가보고됩니다.
이 오류의 원인은 일반적으로 다음과 같습니다.
쿼리 실패 : query () 메소드가 실행되지 않으면 mysqli_result 객체 대신 false를 반환합니다. 현재 Fetch_assoc () 또는 $ result 에서 다른 메소드를 계속 호출하면 유형 오류가 발생합니다.
예를 들어:
$result = $mysqli->query($sql);
if ($result === false) {
die("쿼리가 실패했습니다: " . $mysqli->error);
}
이 코드는 쿼리가 실패하면 MySQLI_RESULT 메소드가 계속 호출되지 않도록하여 유형 오류를 피합니다.
연결 오류 : 데이터베이스 연결에 실패하면 $ MySQLI 객체 자체가 제대로 작동하지 않습니다. 데이터베이스 연결이 성공했는지 확인하십시오.
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
데이터베이스 연결이 성공하지 못하면 후속 쿼리가 실행되지 않으므로 $ result는 mysqli_result 유형이 아닙니다.
통화 오류 : 때때로 논리적 문제로 인해 프로그램은 잘못된 위치에서 fetch_assoc () 와 같은 메소드를 호출하여 쿼리 결과 객체가 아닌 $ 결과를 초래할 수 있습니다.
이 문제를 해결할 때 디버그 코드를 추가하여 $ 결과 유형을 확인하여 MySQLI_RESULT 객체인지 확인할 수 있습니다.
var_dump($result);
이 유형 오류를 피하려면 쿼리 작업 후 $ result가 유효한 MySQLI_RESULT 객체인지 확인하십시오. 개선 된 코드 예는 다음과 같습니다.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$sql = "SELECT * FROM users WHERE id = 1";
$result = $mysqli->query($sql);
// 쿼리가 성공했는지 확인하십시오
if ($result === false) {
die("쿼리가 실패했습니다: " . $mysqli->error);
}
// 프로세스 쿼리 결과
while ($row = $result->fetch_assoc()) {
echo "사용자ID: " . $row['id'] . " 사용자名: " . $row['name'] . "<br>";
}
?>
query () 메소드의 리턴 값을 확인하면 유효한 mysqli_result 객체를 반환하여 유형 오류를 피할 수 있습니다.
PHP에서 MySQLI 확장자를 사용하는 경우 쿼리 실패 또는 잘못된 객체 유형 호출로 인해 오류가 발생합니다. 각 쿼리 후 결과 세트가 유효하고 잘못된 객체에서 호출 메소드를 피하는 것이 이러한 유형의 오류를 해결하는 열쇠입니다.