PHP에서 MySQL 준비 명령문 결과 열 이름을 어떻게 결정할 수 있습니까?
-
06-07-2019 - |
문제
즉, 다음과 같은 준비된 진술과 함께.
select col1,...coln from table where col3 = ?
$ mysqli-> field_count를 사용하여 반환되는 열의 수를 얻을 수 있다고 생각합니다 (시도하지 않음).
그러나 각 열 이름을 bind_results에서 반환 된 값에 연결하는 방법이 있습니까? 나는 항상 명령 자체에서 열 이름을 구문 분석하려고 시도 할 수 있지만, 그것은 내가 내려 가고 싶은 도로가 아닙니다.
문맥:
클래스 속성을 데이터베이스에서 반환 한 열 이름에 맵핑하는 PHP 인터페이스를 정의 할 수 있기를 원합니다. 그래서 주어진
class A implements IColumnMapped{
public $prop1, $prop2; private $map;
public function __construct() {
$map = array();
$map['col1'] = & $this->prop1;
$map['col2'] = & $this->prop2;
}
public function getMap() { return $this->map;}
}
그리고
$mysqli->prepare("select col0, col1, col2, col3 from table");
Bind_Results를 사용하고 (의사 코드)와 같은 작업을 수행 할 수 있습니다.
for($resultColumns as $columnName) {
if(isset($map[$columnName])) $map[$columnName] = $results[$columnName];
}
필요한 두 열만 꺼내어 클래스 A의 올바른 속성에 할당하십시오.
해결책
나는 믿는다 mysqli_result :: fetch_object 그리고 mysqli_result :: fetch_fields 당신을 도울 수 있습니다.
다른 팁
이 수정에 감사드립니다. 'Select *'S 앞에서 선택할 수 없을 때 매우 유용합니다.
제휴하지 않습니다 StackOverflow