我使用了教程中的现有代码,需要对其进行更改。 原始代码不使用数组,但我需要它。
在我index.php
我正在使用标记调用该函数:
else if ($tag == 'getinvbykost') {
$kstalt = $_POST['kstalt'];
$get = $db->GetInvByKost($kstalt);
if ($get != false) {
// echo json with success = 1
$response["success"] = 1;
$response["ean"] = $get["ean"];
$response["name"] = $get["name"];
$response["betriebsdatenalt"] = $get["betriebsdatenalt"];
echo json_encode($response);
} else {
// user not found
// echo json with error = 1
$response["error"] = 1;
$response["error_msg"] = "nicht erfolgreich";
echo json_encode($response);
}
}
函数GetInvByKost($kstalt);
在DB_Functions.php
中定义。
部分是:
public function GetInvByKost($kstalt) {
$result = mysql_query("SELECT ean, name, betriebsdatenalt FROM geraete WHERE kstalt='$kstalt' AND accepted='0'") or die(mysql_error());
// check for result
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
while ($result = mysql_fetch_assoc($result)){
}
return $result;
//echo $result[1];
}
else {
// user not found;
return false;
}
}
问题是,函数GetInvByKost返回一个数组。 index.php中的部分
$response["success"] = 1;
$response["ean"] = $get["ean"];
$response["name"] = $get["name"];
$response["betriebsdatenalt"] = $get["betriebsdatenalt"];
不是针对一个数组,只针对一行。 我如何获取数组中的值来构建我的输出?
答案 0 :(得分:0)
mysql_fetch_assoc($result)
会返回 flat 数组。这意味着您无法通过密钥访问返回的数组。因此$get["ean"]
是错误的,$get[1]
是正确的。您只能通过索引访问mysql_fetch_assoc($result)
的结果,而不是密钥。您的查询中有SELECT ean, name, betriebsdatenalt...
,因此索引“ean”等于0,“name”等于1,依此类推。因此,应以这种方式更改代码的3个部分:
`$get["ean"]` => ` $get[0]`
`$get["name"]` => `$get[1]`
`$get["betriebsdatenalt"]` => `$get[2]`
<强>更新强> 因此,index.php文件应该是这样的:
else if ($tag == 'getinvbykost') {
$response = array();
$kstalt = $_POST['kstalt'];
$get = $db->GetInvByKost($kstalt);
if ($get != false) {
// echo json with success = 1
$response["success"] = 1;
$response["ean"] = $get[0];
$response["name"] = $get[1];
$response["betriebsdatenalt"] = $get[2];
echo json_encode($response);
} else {
// user not found
// echo json with error = 1
$response["error"] = 1;
$response["error_msg"] = "nicht erfolgreich";
echo json_encode($response);
}
}