2014-04-17 1 views
0

저는 매우 간단한 작업을 수행하려고합니다.간단한 쿼리 및 문제가있는 ussage 예제를 찾을 수 없습니다.

매개 변수없이 PDO 쿼리의 사용 예를 찾을 수 없습니다. mysqli는 내 후위였습니다 ... 모든 사람들이 저를 사용하지 않으려 고 불평하면서 MYSQL을 피하려고했습니다.

그래서 나는이 시도 :

$db = new mysqli('hostname', 'user', 'pass', 'db'); 
$dbh = new PDO("mysql:host=hostname;dbname=db", "user", "pass"); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$types = $db->query("SELECT * from `a_types` ORDER BY `priority`"); 
while ($type = $db->fetch_array($types)) { 
echo '<a href="{$_SERVER[PHP_SELF]}?{$type[title]}=choose">I have a broken {$type[title]}.</a> <br />'; 
} 

을하지만 다음과 같은 문제가 발생합니다 Fatal error: Call to undefined method mysqli::fetch_array()

내가 잘못하고있는 중이 야 무엇을?

$db으로 전화를 걸면 끝나면 연결을 종료해야합니까?/어떻게하면 돼?

+2

왜 pdo와 mysqli를 모두 사용 하시겠습니까? – comrade

+0

당신도 쿼리를 실행하지 않았다, 어떻게 가져올 수 있습니까? PDO로'SELECT' 쿼리를하면 대개'$ dbh-> closeCursor();'로 닫습니다. – iamsleepy

+1

$ db-> query는 바로 실행하는 것을 의미합니까? 또는 atleast 그게 어떻게 MySQL 드라이버와 함께 할 ... – user3147145

답변

1

$types 대신 $dbfetch_array을 호출하십시오. $db->query()$types에 저장중인 결과 집합을 반환합니다. 이 리셋 세트를 사용하면 fetch_array과 같은 기능을 사용하여 결과를 반복 할 수 있습니다.

$result = $db->query('SELECT blabla'); 
while($type = $result->fetch_array()){ 
    // do stuff 
} 

// 편집 : 더 깨끗한 코드로 연결을 닫는 것이 더 좋습니다. 일반적으로 객체를 삭제할 때 연결도 닫힙니다 (스크립트가 완료 될 때도 발생합니다).

+0

필자는'$ db-> fetch_array ($ types)'를 썼다는 것을 정말로 이해하지 못한다. 그래서 확실히 $ types에 첨부 된 질의 결과를 얻어야합니다 ...? – user3147145

+0

아니요. $ db-> query_fetch_array를 호출 할 필요가있는 객체를 리턴한다. 나는 당신에게 초를 줄 것이다 – Fuzzyma

+0

이것은 아직도 나의 문제를 해결하지 못했다. 그것은 그 의미가 무엇이든 그 대상이 아니라는 것을 말합니다. – user3147145

0

PDO::query에서 예 1을 사용하면 Igputa으로 표시됩니다.

$dbh = new PDO("mysql:host=hostname;dbname=db", "user", "pass"); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$types = $dbh->query("SELECT * from `a_types` ORDER BY `priority`"); 
$types->setFetchMode(PDO::FETCH_ASSOC); 
while ($type = $types->fetch()) { 
    echo '<a href="{$_SERVER[PHP_SELF]}?{$type[title]}=choose">I have a broken {$type[title]}.</a> <br />'; 
} 
관련 문제