2013-09-30 72 views
-1

這段代碼PDO fetchAll相當於PDO :: FETCH_NUM的PDO :: FETCH_COLUMN?

/* already set up a query with one column in result */ 

$row['fk_user_pks'] = $q->fetchAll(PDO::FETCH_COLUMN); 

等同於:

/* already set up a query with one column in result row */ 

$result = $q->fetchAll(PDO::FETCH_NUM); 
$row['fk_user_pks'] = array(); 
foreach ($result as $r) { 
    $row['fk_user_pks'][] = $r[0]; 
} 
+2

是什麼讓你無法運行看? –

+0

@YourCommonSense,懶惰。順便說一句,我喜歡你的safemysql。 :)請添加更多文檔。 –

+1

我不明白。我總是準備好一個測試文件,來驗證我的想法 - 一秒鐘。我把這個文件作爲我可以獲得的最可靠的信息來源,甚至比PHP文檔更好。更不用說Stack Overflow了,它的評價方式如下。您想在文檔中解釋哪個主題? –

回答

3

是的,他們是等同如下所示:

<?php 


$dbh = new PDO('sqlite::memory:'); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


$dbh->exec(
    "CREATE TABLE IF NOT EXISTS `test1` (" . 
    " `id` INTEGER, " . 
    " `whatever` char(10)," . 
    " PRIMARY KEY (`id`) " . 
    ")" 
); 

for ($i = 0; $i < 10; $i++) { 
    $dbh->exec("INSERT INTO test1 (whatever) VALUES ('hejsan')"); 
} 


$q = $dbh->prepare('SELECT id FROM test1'); 
$q->execute(array()); 
$ids = $q->fetchAll(PDO::FETCH_COLUMN, 0); 

print_r($ids); 

$q->execute(array()); 
$result = $q->fetchAll(PDO::FETCH_NUM); 
$ids = array(); 
foreach ($result as $r) { 
    $ids[] = $r[0]; 
} 

print_r($ids);