3

PHPで実行しているクエリがあります。DBはSQLServer2008です。PHPでのクエリは次のとおりです。

"SELECT * FROM applicants WHERE applicants.families_id = '{$family_array['id']}'";

$family_arrayidが。と照合される場所families_id。その結果、1つの行が表示されます。関数を使用して、その行をPHPの配列に保存しmssql_fetch_arrayます。この配列を出力すると、次のようになります。

    Array
(
    [0] => 26
    [id] => 21
    [1] => 21
    [user_id] => 21
    [2] => Kristi
    [mother_fname] => Kristi
    [3] => Lochala
    [mother_lname] => Lochala
    [4] => Nathan
    [father_fname] => Nathan
    [5] => Lochala
    [father_lname] => Lochala
    [6] => 
    [app_emergency] => 
    [7] => 
    [upload_mother_passport] => 
    [8] => 
    [upload_mother_visa] => 
    [9] => 
    [upload_father_passport] => 
    [10] => 0
    [upload_father_visa] => 0
    [11] => nathan-lochala
    [user_added_username] => nathan-lochala
    [12] => Mar 19 2013 01:00:37:660PM
    [user_added_date] => Mar 19 2013 08:48:00:000AM
    [13] => 192.168.88.15
    [user_added_ip] => 192.168.88.15
    [14] => 
    [user_updated_username] => 
    [15] => 
    [user_updated_date] => 
    [16] => 
    [user_updated_ip] => 
    [17] => 21
    [18] => nathan-lochala
    [username] => nathan-lochala
    [19] => b9a234cb37ce2b75d77befecabfa650e39489e0b
    [hash_password] => b9a234cb37ce2b75d77befecabfa650e39489e0b
    [20] => Nathan
    [fname] => Nathan
    [21] => Lochala
    [lname] => Lochala
    [22] => 2
    [num_child] => 2
    [23] => Mar 19 2013 08:48:00:000AM
    [24] => 192.168.88.15
    [25] => 
    [26] => 
    [27] => nathan-lochala@shk.qsi.org
    [email] => nathan-lochala@shk.qsi.org
    [28] => parent
    [access] => parent
)

気付いた場合、index [0]は対応するキー値と一致しません[id]。どうしてこれなの?SQL Server Managerを使用してまったく同じクエリを実行したところ、期待どおりに実行されましたが、PHPでその配列をフェッチすると、最初のキー値のみが歪んでしまいます。テーブルを作り直す以外に、考えられることはすべて試しました。何か案は?

編集:mssql_fetch_assoc()を実行すると、次の結果が得られます。

Array
(
    [id] => 21
    [user_id] => 21
    [mother_fname] => Kristi

ここに画像の説明を入力してください

ここに画像の説明を入力してください

4

2 に答える 2

1

投稿されたSQLまたは含めたテーブルデータ/構造のいずれかに、すべての関連情報を含めていません。あなたのクエリはSELECT * FROM applicants WHERE applicants.families_id = ?まだあなたが投稿したテーブル構造にfamilies_id列が含まれていません(名前もありませんapplicants)。hash_passwordまた、投稿された配列 ( 、usernameなど) のデータの多くも含まれていません。

usersこのことから、実際にテーブルで JOIN を実行していると推測できます。発生する可能性が最も高いのは、配列が構築されると、JOIN がメイン テーブル (家族/申請者、それが何であれ)を上書きしているテーブルのidusersidを含むことです。user_idはすでにメイン テーブルに含まれているため、SQL ステートメントで列を明示的にリストし、列を除外する必要がありusers.idます。

于 2013-03-19T07:21:34.010 に答える
0

mssql_fetch_array($result, MSSQL_ASSOC)MSSQL_BOTH を想定しているので作成する必要があります。

ここで答えを見つけました: http://php.net/manual/en/function.mssql-fetch-array.php

于 2013-03-19T05:49:50.630 に答える