2

この単純なコードの下に、配列フェッチで[3]to2010-01-01[6]toを置き換えたいと思います。editedキーを使用してその場で編集する機能を見つけましたが、それは正しく機能しません PHP:

while ( $aRow = mysql_fetch_array( $rResult ) )
{
    replace_key('id', '00', $aRow);
    $output['aaData'][] = $aRow;
}

結果:

Array
(
    [0] =>aaaaaaa
    [title] => bbbbbb
    [1] => 86
    [id] => 86
    [2] => rewr
    [subject] => rewr
    [3] => 0000-00-00
    [date_time] => 0000-00-00
    [4] => admin
    [username] => admin
    [5] =>cccc
    [6] =>ddddd
)
4

1 に答える 1

0

の既定の引数を使用mysql_fetch_array()すると、SQL クエリは各行のインデックス付き配列エントリと連想配列エントリの両方を返します。

mysql_*まず、スタイル関数から離れることを強くお勧めします。この一連のツールは、しばらくの間廃止されており、更新されていません。理由をより詳細に説明しているオンラインのリソースと、いくつかの優れた代替手段があります。ああ、先に進みましょう。

次に、(この関数を使用する必要がある場合) 2 番目の引数としてMYSQL_ASSOC(連想配列) またはMYSQL_NUM(番号付き配列) のいずれかを関数に渡すことにより、いずれかの戻り値形式メソッドを使用することをお勧めします。

たとえば、次のMYSQL_ASSOCようになります。

Array
(
    [title] => bbbbbb
    [id] => 86
    [subject] => rewr
    [date_time] => 0000-00-00
    [username] => admin
)

一般に、クエリ内で列を選択した順序に依存する必要がないため、番号付き配列よりも優先されます。

たとえば、次のMYSQL_NUMようになります。

Array (
    [0] =>aaaaaaa
    [1] => 86
    [2] => rewr
    [3] => 0000-00-00
    [4] => admin
)

右。while ループで配列を編集するには、次の行を追加するだけです。

// Using MYSQL_ASSOC

while ( $aRow = mysql_fetch_array( $rResult , MYSQL_ASSOC ) ) {

    $aRow['date_time'] = '2010-01-01';
    $aRow['status'] = 'edited'; // Whatever key this column should be needs to be added instead of 'status'

    $output['aaData'][] = $aRow;

}

または:

// Using MYSQL_NUM

while ( $aRow = mysql_fetch_array( $rResult , MYSQL_NUM ) ) {

    $aRow[3] = '2010-01-01';
    $aRow[6] = 'edited';

    $output['aaData'][] = $aRow;

}

それでも両方に固執したい場合は、両方の例の行を使用する必要があります。

// Using DEFAULT / MYSQL_BOTH

while ( $aRow = mysql_fetch_array( $rResult ) ) {

    $aRow['date_time'] = '2010-01-01';
    $aRow[3] = '2010-01-01';

    $aRow['status'] = 'edited'; // Whatever key this column should be needs to be added instead of 'status'
    $aRow[6] = 'edited';

    $output['aaData'][] = $aRow;

}
于 2014-02-13T15:18:01.363 に答える