0

こんにちは、みんな。現在、ユーザー ログインを処理するログイン クラスを開発中です。次のコードを使用してオブジェクトとして作成することにより、DB から配列リストを取得します。

 $dBquery = new Selection();
 $dBquery->setUpSelection($sqlConstructor);
 $sqllogin = $dBquery->sQLResults();
 print_r($sqllogin);

からprint_r、これが返されます:

Array (
    [0] => Array (
        [0] => 1
        [uSID] => 1
        [1] => 0
        [level] => 0
        [2] => a
        [Username] => > a
        [3] => a
        [password] => a
        [4] => a
        [email] => a
        [5] => 0
        [lockedID] => 0
    )
)

さて、見た目からすると、これは配列内にある配列ですが、この配列を作成するコードがそれを誘発しないため、少し混乱します (私は間違っている可能性があります。残念ながら、これはポインターが必要な場所です)。配列を設定するコードは次のとおりです。

private function selectAndQuery() {
        //Select query with AND
        $sql2 ="SELECT * FROM ".$this->table." WHERE ".$this->column."='".$this->where."' AND ".$this->andColumn."='".$this->sqlAnd."'  ";
        $a = mysql_query($sql2) or die(mysql_error());      
        //get number of rows to determine if there are any results
        if (mysql_num_rows($a) < 1) {
                    //TO DO no results returned.
            $this->sQLResults();
        } else {
            //if there's a result store it into an array.
            while ($row = mysql_fetch_array($a)) {
            $this->sqlResultsArray[] = $row; 
            }           
            $this->sQLResults();
        }
    }

皆さんへの私の質問は、配列が次元的になる原因は何ですか?それを止めるにはどうすればよいですか? 多次元配列から情報を引き出すことができることはわかっていますが、物事をできるだけ単純にしようとしていました。

どんな助けでも大歓迎です。どうもありがとう。

4

4 に答える 4

1
$this->sqlResultsArray[] = $row; //This is causing you to get multidimensional array
since  mysql_fetch_array returns an array.So if you are sure that you will get only one
row.you can use below given mehod instead
if(mysql_num_rows() = 1){$this->sqlResultsArray  = mysql_fetch_array($a);}
于 2012-10-03T16:33:28.633 に答える
0

データの行を配列として返すmysql_fetchfunction_array()関数を使用しています。次に、この配列を結果配列に挿入します。つまり、そのようにフェッチ/構築しているため、多次元になります。

于 2012-10-03T16:33:44.110 に答える
0
    while ($row = mysql_fetch_array($a)) {
    $this->sqlResultsArray[] = $row; 

$rowは配列です。これをsqlResultsArrayに追加します。

于 2012-10-03T16:33:51.287 に答える
0

選択すると、クエリ パラメーターに一致するすべての行の配列が返されるだけなので、インデックス 0 では最初の行、インデックス 1 では 2 番目の行、というようになります。

結果が最大で 1 つになることがわかっている場合は、次のようにすることができます。

$sqllogin = $dBquery->sQLResults();
$sqllogin = $sqllogin[0];
于 2012-10-03T16:35:11.097 に答える