2013-09-30 8 views
-1

Является ли этот кодPDO fetchAll PDO :: FETCH_COLUMN эквивалентен PDO :: FETCH_NUM?

/* 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, лень. Btw Мне нравится ваш safemysql. :) Пожалуйста, добавьте в него больше документов. –

+1

Я этого не понимаю. У меня всегда есть тестовый файл, чтобы проверить, какая идея меня поразила - через секунду. И я беру этот файл как самый надежный источник информации, который у меня есть, даже лучше, чем PHP-документы. Не говоря уже о переполнении стека, который оценивается ниже. Какую тему вы хотите объяснить в документах? –

ответ

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); 
Смежные вопросы