0

サーバーでPHP5.4.4を実行しており、でコンパイルされています./configure。SQLite3.7.7.1ドライバーを使用したPDOがあります。次のテーブルを作成しました。

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.123456789012345678901</td>
                <td>0.123456789012345678901</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.にand 0.、and、andgiven_name.を与えているの1.ですか、そしてクエリからこの動作をフィルタリングするために私ができることはありますか?両方のタイプではなく、ちょうどid.またはちょうど取得したいのですが。0.

4

1 に答える 1

1

これで直りました

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

ハットチップ、アシストのビジクロップ

于 2012-07-16T07:18:40.123 に答える