私は現在、次のような MySQL スクリプトを実行してwhile loop
います。
$Query = mysql_query("SELECT * FROM appointments");
while ($Rows = mysql_fetch_array($Query))
{
...
}
これは単一の行を配列として返し、これを必要に応じて操作できます。次に例を示します。
if ($Rows['Reoccour'] == 1)
{
$NextDate = date('o-m-d', strtotime($Rows['Date'] . " +" . $Rows['howfar'] . " weeks"));
if ($NextDate < date('o-m-d'))
{
mysql_query("UPDATE appointments SET Date='$NextDate' WHERE ID='{$Rows['ID']}'");
}
}
これは while ループ内に配置されるため、配列自体を操作できます。しかし、PDO に移行したいのですが、必要なarray
形式を取得するのに問題があります。
これが私のコードです:
$Query = $dbh->prepare("SELECT * FROM appointments");
$Query->execute();
$Results = $Query->fetchAll();
print_r($Results);
これにより、次のような多次元配列が生成されます。
Array (
[0] => Array (
[ID] => 1
[0] => 1
[Appointment] => JCP Lucy
[1] => JCP Lucy
[Date] => 2012-12-21
[2] => 2012-12-21
[Location] => Grays JCP
[3] => Grays JCP
[Reoccour] => 1
[4] => 1
[howfar] => 1
[5] => 1
)
[1] => Array (
[ID] => 3
[0] => 3
[Appointment] => JCP Sign On
[1] => JCP Sign On
[Date] => 2012-12-14
[2] => 2012-12-14
[Location] =>
JCP Grays
[3] => JCP Grays
[Reoccour] => 1
[4] => 1
[howfar] => 2
[5] => 2 )
)
私がやろうとしているのは、MySQL 関数を使用するときに使用した$Results = $Query->fetchAll();
ようなセットアップ内にあることです。while loop
単一の文字列まで配列を取得したい場合は、次のようにする必要があります。
foreach ($Results AS $results)
{
foreach ($results AS $result)
{
echo "{$result} <br>";
}
}
しかし、これは戻ります:
1
JCP Lucy
JCP Lucy
2012-12-21
2012-12-21
Grays JCP
Grays JCP
1
1
1
1
3
3
JCP Sign On
JCP Sign On
2012-12-14
2012-12-14
JCP Grays
JCP Grays
1
1
2
2
値が重複しています。私の質問は:
1) 重複する値を削除します
2) while loop
PDO Api を使用してしばらく実行します -- ただし、関数を実行したときと同じように配列キーを操作できるようにしmysql_fetch_array
ます。