无法从MySQL中的另一个表中获取数据
我正在尝试从名为Merchant的表中获取数据(M_Name)。无法从MySQL中的另一个表中获取数据
以下是我的代码:
<?php
$response = array();
$link = mysql_connect('localhost','root','') or die ('Could not connect: '.mysql_error());
mysql_select_db('ichop') or die ('Could not connect to database');
$result = mysql_query("select * from offer") or die(mysql_error());
if(mysql_num_rows($result) > 0){
$response["offers"] = array();
while($row = mysql_fetch_array($result)){
$offer = array();
$offer["offer_id"] = $row["Offer_ID"];
$offer["start_date"] = $row["Start_Date"];
$offer["end_date"] = $row["End_Date"];
$offer["o_desc"] = $row["O_Desc"];
$offer["short_desc"] = $row["Short_Desc"];
$offer["merchant_ID"] = $row["Merchant_ID"];
$offer["m_name"] = mysql_query("SELECT M_Name FROM MERCHANT WHERE MERCHANT_ID = '".$row["merchant_ID"]."'");
array_push($response["offers"], $offer);
}
$response["success"] = 1;
echo json_encode($response);
} else {
//no offer found
$response["success"] = 0;
$response["message"] = "No offer found";
echo json_encode($response);
}
?>
当我使用Web浏览器中运行这个PHP文件,我不能为商家获取所需的名称,即使数据是存在于数据库...它只会返回我“空”。
{"offers":[{"offer_id":"1","start_date":"2013-05-17","end_date":"2013-05-18","o_desc":"AAA","merchant_ID":"2","m_name":null}],"success":1}
我做了什么错误或我是什么人仍下落不明?请帮助..谢谢!
mysql_query("SELECT M_Name FROM MERCHANT WHERE MERCHANT_ID = '".$row["merchant_ID"]."'");
不会从数据库返回值,您需要跟随它,例如mysql_fetch_array
,就像您对数据库的其他查询一样。
有一个更简单的解决方案:使用一个JOIN
,它结合了两个表。
SELECT offer.*, MERCHANT.M_Name
FROM offer
LEFT JOIN MERCHANT ON(MERCHANT.MERCHANT_ID = offer.merchant_ID)
@Adder ...我应该怎么做? –
$offer["m_name"] = mysql_query("SELECT M_Name FROM MERCHANT WHERE MERCHANT_ID = '".$row["merchant_ID"]."'")
mysql_query()
不返回一个字符串,但资源。你必须获取结果。
此外,不要忘记,mysql_ *现已被弃用。
[编辑]
如前所述法比奥,你宁愿使用JOIN您的查询。目前,您正在循环中提出请求。这是没用的(INNER JOIN或LEFT JOIN是你想要的)和非常资源的消耗。
@Herode ......我应该怎么做? –
看起来像你必须从查询,而不是同时返回一个结果,
mysql_fetch_array(mysql_query("SELECT M_Name FROM MERCHANT WHERE MERCHANT_ID = '".$row["merchant_ID"]."'"));
但最好你做出一些错误hadling第一
您可以使用下面一个
$resMerchant = mysql_query("SELECT M_Name FROM MERCHANT WHERE MERCHANT_ID = '".$row["merchant_ID"]."'");
$rowMerchant = mysql_fetch_assoc($resMerchant);
$offer["m_name"] = $rowMerchant['M_Name'];
谢谢兄弟!你只是救了我^ _ ^我正在使用mysql_ *仅用于当前项目...将来不打算做任何开发我猜:X –
@JackyLau欢迎你 – Fabio