필자는 자신의 PDO 랩퍼를 작성하여보다 쉽고 안전하게 사용할 수 있도록했습니다.PHP PDO에서 반환 형식을 변경하십시오. 선택
$user = $db->select('users')
->eq('twitter_id', $twitter_id)
->limit(1)
->prepare()
->exec();
이 쿼리를 생성 :
표준 쿼리처럼 보이는 내가 현재 그것을 원하는
는SELECT * FROM users WHERE twitter_id = :twitter_id LIMIT 1
이 완벽하게 잘 작동합니다. 문제가 발생하는 곳은 여러 행을 반환하는 쿼리입니다.
내 앱
내가 잡아 한 번에 사용하려는 일부 동적 설정을 저장하고 난에 의해이 같은 쿼리를 실행하는 것이 수행 할 수 있습니다 생성$share_datas = $db->select('settings', 'setting, value')
->prepare()
->exec();
:
SELECT setting, value FROM settings
을 어느 것이 반환합니까 :
Array
(
[0] => Array
(
[setting] => since_id
[value] => 17124357332
)
[1] => Array
(
[setting] => last_dm
[value] => 1271237111
)
)
함수 prepare()
은 쿼리를 위해 조각을 함께 넣고 exec()
함수는 params를 바인딩하고 배열을 반환합니다.
function exec()
{
// echo 'vars: <pre>'.print_r($this->sql_vars, true).'</pre>';
$stmt = $this->dbh->prepare($this->sql_last_query);
foreach($this->sql_vars as $key => $val)
{
if('date_time' === $key) continue;
$bind = $stmt->bindValue($key, $val);
}
$stmt->execute();
$this->sql_vars = array();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
이제 질문 : 그것은 아래와 같이 반환 및 추가 루프를 방지 배열을 반환 할 수 있도록 내가 exec()
을 변경하거나 쿼리 자체 수있는 방법이 있나요?
Array
(
[since_id] => 17124357332
[last_dm] => 1271237111
)
왜 나중에 php foreach 루프를 사용하여 처리하고 싶지 않은 이유가 있을까요? – Lukman
기본적으로 가능한 경우 추가 루프를 피하려고 시도합니다. – Jayrox