0

通过使用下面的代码,我只能从数据库中获取单个记录,但我想使用 MemberID 获取存储在数据库中的特定成员的所有记录。

例如,就像我的数据库中有 2 条记录为 MemberID 1,但是每当我试图从数据库中获取记录时,只获取第一条记录而不是两条记录,为什么?

<?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。

如果您必须使用这个旧库,请记住包装$strMemberIDmysql_real_escape_string()避免 SQL 注入漏洞。

完整代码:

$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
<?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)
{

while($row==mysql_fetch_assoc($objQuery)){
$arr = array();
$arr["OrderID"] = $obResult["OrderID"];
$arr["ItemDetails"] = $obResult["ItemDetails"];
}
}
mysql_close($objConnect);
echo json_encode($arr);
?>
于 2013-06-10T06:37:41.160 回答
0

尝试将 mysql_fetch_assoc() 与 while 条件一起使用,例如

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

使用 mysqli_* 函数而不是 mysql_,因为它们已被弃用。

小心可能的注入 - 如果 $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 回答
0

使用 while 循环获取结果

$objQuery = mysql_query($strSQL);

$arr = 数组();

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

$OrderID = $obResult["OrderID"];

$ItemDetails = $obResult["ItemDetails"];

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

}

mysql_close($objConnect);

回声 json_encode($arr);

于 2013-06-10T06:30:01.710 回答