通过使用下面的代码,我只从数据库获取单个记录,但我想使用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);
?>
答案 0 :(得分:1)
对于多行,您需要一个循环,以便您可以反复调用mysql_fetch_assoc()
,直到所有行都被处理完毕:
$arr = array();
while($obResult = mysql_fetch_assoc($objQuery))
{
$arr[] = $obResult;
}
附注:mysql_*
已被弃用且不鼓励,请考虑升级到PDO或MySQLi。
如果您必须使用这个旧库,请记住在$strMemberID
中包装mysql_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);
答案 1 :(得分: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 语句
答案 2 :(得分:0)
使用mysqli_ *函数而不是mysql_,因为它们已被弃用。
注意可能注射 - 如果$ strMemberID来自外部,则可能很危险! mysqli_escape_string有帮助。
while($obResult = mysqli_fetch_assoc($objQuery)){
$arr = array();
$arr["OrderID"] = $obResult["OrderID"];
$arr["ItemDetails"] = $obResult["ItemDetails"];
}
答案 3 :(得分:0)
$ objQuery = mysql_query($ strSQL);
$ arr = array();
while($ obResult = mysql_fetch_assoc($ objQuery)){
$ OrderID = $ obResult [&#34; OrderID&#34;];
$ ItemDetails = $ obResult [&#34; ItemDetails&#34;];
array_push($ arr,array(&#39; OrderID&#39; =&gt; $ OrderID,&#39; ItemDetails&#39; =&gt; $ ItemDetails));
}
mysql_close($ objConnect);
echo json_encode($ arr);
答案 4 :(得分: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);
?>