2012-07-15 2 views
0

Я запускаю PHP 5.4.4 на своем сервере, скомпилированный с ./configure. У меня PDO с драйвером SQLite 3.7.7.1. Я создал следующие таблицы.PHP PDO SQLite Driver возвращает Duplicate Date

CREATE TABLE IF NOT EXISTS 
login (
    id PRIMARY KEY ON CONFLICT REPLACE, 
    given_name, 
    family_name, 
    gender 
); 
CREATE TABLE IF NOT EXISTS 
address (
    id, 
    street, 
    city, 
    state, 
    zip, 
    FOREIGN KEY(id) REFERENCES login(id) ON DELETE CASCADE 
); 
CREATE TABLE IF NOT EXISTS 
certification (
    id, 
    certification, 
    certification_expiration, 
    FOREIGN KEY(id) REFERENCES login(id) ON DELETE CASCADE 
); 

И этот вид.

CREATE VIEW "members" AS SELECT 
    login.id, login.given_name, login.family_name, login.gender, 
    address.street, address.city, address.state, address.zip, 
    certification.certification, certification.certification_expiration 
FROM 
    login, address, certification 
WHERE 
    login.id = certification.id 
    AND 
    login.id = address.id 

Я запрашивая мнение так:

<?php foreach ($sql->query('SELECT * FROM members;') as $row): ?> 
        <tr> 
<?php  foreach ($row as $index => $col): ?> 
         <td><?=$index;?>.<?=$col;?></td> 
<?php  endforeach; ?> 
        </tr> 
<?php endforeach; ?> 

И это производит вывод, как это.

  <tr> 
       <td>id.123456789</td> 
       <td>0.123456789</td> 
       <td>given_name.Mark</td> 
       <td>1.Mark</td> 
       <td>family_name.Tomlin</td> 
       <td>2.Tomlin</td> 
       <td>gender.Male</td> 
       <td>3.Male</td> 
       <td>street.1 Some Lane</td> 
       <td>4.1 Some Lane</td> 
       <td>city.Anywhere</td> 
       <td>5.Anywhere</td> 
       <td>state.NY</td> 
       <td>6.NY</td> 
       <td>zip.12345</td> 
       <td>7.12345</td> 
       <td>certification.AEMT-P</td> 
       <td>8.AEMT-P</td> 
       <td>certification_expiration.2015-07-31</td> 
       <td>9.2015-07-31</td> 
      </tr> 

Я хотел бы знать, почему это дает мне id. и 0. и given_name. и 1., и есть все, что я могу сделать фильтр это поведение из запроса? Я бы хотел получить только id. или просто 0., но не оба типа.

+3

Вы можете начать здесь: http://www.php.net/manual/en/pdostatement.fetch.php 'PDO :: FETCH_BOTH (по умолчанию): возвращает массив, индексированный как с именем столбца, так и с номером столбца с номером 0 как возвращено в вашем результирующем наборе' – biziclop

ответ

1

Это фик его

$sql->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 

Hat наконечник, biziclop для оказания помощи.

Смежные вопросы