특정 속성을 가진 클래스가 있고 그 속성이 데이터베이스의 열 이름과 일치하도록 최선을 다했다고 가정 해 봅시다. 귀하의 클래스 개체에 DB를.클래스에 데이터베이스 정보를 효율적으로 검색하는 방법
일반적으로 이렇게하는 방법은 $class->get_all()
메서드를 만들어 특정 쿼리와 일치하는 모든 행을 데이터베이스에 쿼리하는 것입니다. 그런 다음 리소스 세트에서 mysql_fetch_object ($ resource)를 사용하여 여러 sql 객체를 만든 다음 하나의 배열에 저장 한 다음 반환합니다. 나도 같은 특성을 가진, 2 개체 ($ 행 및 $ 클래스)가 의미하는 ...
<?php
while($row = mysql_fetch_object($result_set)){
$class->id = $row->id;
$class->name = $row->name;
$class->birthdate = $row->birthdate;
$output[] = $class;
}
return $output;
?>
을, 나는 다른에 그들 중 하나를 복사하고 : 기본적으로이 같은 일이 일반적으로 발생합니다.
최적화 방법이 있습니까? 마찬가지로, 하나에서 다른 값을 복사하는 대신 같은 SQL 개체 속성에 대한 포인터로 그들을 설정할 수 있습니까?
새 코드를 작성하는 데 mysql_ * 함수를 사용하지 마십시오. 더 이상 유지 관리되지 않으며 커뮤니티가 [지원 중단 프로세스] (http://goo.gl/KJveJ)를 시작했습니다. * [빨간색 상자] (http://goo.gl/GPmFd) *를 참조하십시오. 대신 [prepared statements] (http://goo.gl/vn8zQ)에 대해 알아야하고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용해야합니다. mysqli). 어떤 것을 결정할 수 없다면 [이 기사] (http://goo.gl/3gqF9)가 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 가이드입니다] (http://goo.gl/vFWnC). –
farxad (SO에서)를 조금 더 파고 들었습니다. 흥미로운 점이있었습니다. PHP는 "pass by reference"대신 "pass by value"에서 작동하기 때문에 코드가 분명 더 느리게 실행됩니다. 이를 완화하기 위해 PHP 인터프리터에는 지연 변수와 같은 기능이있어 변수 값을 다른 변수에 대한 포인터로 설정합니다. 이것은 기본적으로 $ class-> id = "$ row-> id에있는 모든 값"이기 때문에 위의 코드가 (비추천에도 불구하고) 내가 생각한 것보다 비효율적이지 않음을 의미합니다. :) – Tobias
'$ row-> id'는 리터럴 ID (정수)를 포함합니다. 그것은 가치가 아니라 참조에 의해 전달됩니다. '$ row' 객체 전체를 전달한다면 올바른 것입니다. 귀하의 초기 가정은 정확합니다. –