Mysqli_result 클래스는 결과 집합에서 여러 행을 행 배열로 반환하는 메서드를 가지고 있습니다. 행은 이미 필드 배열이므로 2 차원 배열입니다. 또한 결과 집합에는 메서드 형태로 단일 행을 반환하는 fetch_object()
메서드가 있습니다.mysqli_result를 확장하고 새 메서드를 추가하는 방법
이제 mysqli_result 클래스를 확장하고 연관 키가 레코드 ID [id => Object()] 인 객체의 연관 배열을 반환하는 새 메서드 fetch_objects()
(복수형)을 추가하고 싶습니다. 물론, mysqli 클래스도 확장해야하고 확장 된 결과 집합을 반환하기 위해 query() 메서드를 재정의해야 할 것이다. 하지만 mysqli와 mysqli_result 사이의 연결 및 쿼리 매개 변수가 어떻게 전달되는지 알 수 없다.
이
이 방식으로 작동한다 :$db=new ReallyMySQLi(...); //initiating my mysqli
$myrst=$db->query($SQL); //returned my extended result
//fetch_objects() returning associative array of objects
//with record ID as associative key
foreach($myrst->fetch_objects() as $id=>$object)
{
echo 'Customer ID:'.$id; //or $object->id;
echo 'Customer firstname:'.$object->firstname;
echo 'Customer lastname:'.$object->lastname;
}
나에게 수치심 나는이 메모 (althoufg 검색에 시간을 보냈다)를 어떻게 찾지 못했는지 정말로 모른다. 그러나, 나는이 코드를 테스트했고 작동한다 !!! 그러나 나는 아직도 그것이 일하는 방법을 얻지 않는다! !! Database_MySQLi 내부의'$ this-> real_query ($ query)'명령은 무슨 일을합니까? 또한 mysqli가'return new Database_MySQLi_result ($ this)'를 발행하면 mysqli_result가 확장되어 result에 인수로 전달되지만 result의 생성자에는 매개 변수가 없다! 나는 아직도 혼란스러워! – sbrbot
나는 real_query에 대해서도 모른다. 그냥 지나가고 작은 연구를하고 이것을 보았습니다. 그냥 나눌 수 있다고 생각 했어. 하나님은 공개적이지만 문서화되지 않은 변수와 방법을 구하십시오! 어쩌면 그는 단지 mysqli_result 클래스를'var_dump '하고 이것들을 발견했다. –
'query()'메소드 대신'real_query()'를 사용하는 것이 중요합니다! 나는이 코드 **가'$ this-> query ($ query)'와 함께 작동하지 않음을 테스트했다. real_query는 쿼리를 실행하고 결과를 데이터베이스 (버퍼되지 않은 결과 - mysqli의 포인터 만 저장)에 남겨 둡니다.이 결과는 나중에 사용되거나 저장되어야합니다. – sbrbot