0

以下のコードを使用すると、データベースから単一のレコードしか取得できませんが、MemberID を使用して特定のメンバーのデータベースに保存されているすべてのレコードを取得したいと考えています。

たとえば、MemberID 1 のデータベースに 2 つのレコードがありますが、データベースからレコードを取得しようとすると、両方のレコードではなく最初のレコードのみが取得されるのはなぜですか?

<?php
$objConnect = mysql_connect("localhost","root","");
$objDB = mysql_select_db("mydatabase");

$strMemberID = $_POST["sMemberID"];
$strSQL = "SELECT * FROM order_details WHERE MemberID = '".$strMemberID."' ";

$objQuery = mysql_query($strSQL);
$obResult = mysql_fetch_assoc($objQuery);

if($obResult)
{
$arr = array();
$arr["OrderID"] = $obResult["OrderID"];
$arr["ItemDetails"] = $obResult["ItemDetails"];
}
mysql_close($objConnect);
echo json_encode($arr);
?>
4

5 に答える 5

1

mysql_fetch_assoc()複数の行の場合、すべての行が処理されるまで繰り返し呼び出すことができるように、ループが必要です。

$arr = array();
while($obResult = mysql_fetch_assoc($objQuery))
{
    $arr[] = $obResult;
}

補足:mysql_*は推奨されておらず、推奨されていません。PDO または MySQLi へのアップグレードを検討してください。

この古いライブラリを使用する必要がある場合は、SQL インジェクション ホールを回避するためにラップ$strMemberIDインすることを忘れないでください。mysql_real_escape_string()

完全なコード:

$objConnect = mysql_connect("localhost","root","");
$objDB = mysql_select_db("mydatabase");

$strMemberID = $_POST["sMemberID"];
$strSQL = "SELECT OrderID, ItemDetails FROM order_details WHERE MemberID = '".mysql_real_escape_string($strMemberID)."' ";

$objQuery = mysql_query($strSQL);

$arr = array();
while($obResult = mysql_fetch_assoc($objQuery)) {
    $arr[] = $obResult;
}
mysql_close($objConnect);
echo json_encode($arr);
于 2013-06-10T06:27:04.860 に答える
0

while ループを使用して結果を取得する

$objQuery = mysql_query($strSQL);

$arr = 配列();

while( $obResult = mysql_fetch_assoc($objQuery) ) {

$OrderID = $obResult["OrderID"];

$ItemDetails = $obResult["ItemDetails"];

array_push( $arr, array( 'OrderID' => $OrderID, 'ItemDetails' => $ItemDetails ) );

}

mysql_close($objConnect);

echo json_encode($arr);

于 2013-06-10T06:30:01.710 に答える
0

のような while 条件で mysql_fetch_assoc() を使用してみてください

while($row = mysql_fetch_assoc($objQuery))
{
   $result[$row['id']]['column1'] = $row['column1']; 
   $result[$row['id']]['column2'] = $row['column2']; 
}

または直接使用できます

while($row = mysql_fetch_assoc($objQuery))
{
   $result[][$row['id']] = $row; 
}
print_r($result);

また、mysql_* 関数は非推奨であるため使用しないでください。代わりに、mysqli _* 関数またはPDOステートメントを使用してください。

于 2013-06-10T06:26:56.397 に答える
0

非推奨であるため、mysql_ の代わりに mysqli_* 関数を使用してください。

インジェクションの可能性に注意してください - $strMemberID が外部からのものである場合、危険な場合があります! mysqli_escape_string が役立ちます。

while($obResult = mysqli_fetch_assoc($objQuery)){

$arr = array();
$arr["OrderID"] = $obResult["OrderID"];
$arr["ItemDetails"] = $obResult["ItemDetails"];
}
于 2013-06-10T06:27:35.853 に答える