我连接我的数据库并获取一些信息,这部分是正确的。但我想对我的数据进行JSON编码。
这是我的代码
<?php
include("ayar.php");
header('Content-Type: application/json');
//$ad = $_POST["ad"];
$ad = "USER89623476571";
$bilgial = @mysql_query("SELECT * FROM KULLANICI WHERE ID_NUMARASI='$ad' ORDER BY ID ASC LIMIT 1");
$oku=mysql_fetch_assoc($bilgial);
$metin= $oku['BAGLI_CIHAZ_ID'];
$yenimetin = explode(',',$metin);
foreach($yenimetin as $yazdir){
bilgial($yazdir);
}
function bilgial($kullanicisi)
{
$TERMINAL_BILGI_AL = @mysql_query("SELECT * FROM TERMINAL WHERE ID='$kullanicisi' ORDER BY ID ASC LIMIT 1");
while($TERMINAL_KAYITLAR=@mysql_fetch_assoc($TERMINAL_BILGI_AL)){
$GELEN_SERIAL = $TERMINAL_KAYITLAR["SERIALNUMBER"];
$GELEN_TERMINAL_ADI = $TERMINAL_KAYITLAR["TERMINAL_ADI"];
$GELEN_SICAKLIK_T1_ALT = $TERMINAL_KAYITLAR["SICAKLIK_T1_ALT"];
$GELEN_SICAKLIK_T1_UST = $TERMINAL_KAYITLAR["SICAKLIK_T1_UST"];
$GELEN_SICAKLIK_T2_ALT = $TERMINAL_KAYITLAR["SICAKLIK_T2_ALT"];
$GELEN_SICAKLIK_T2_UST = $TERMINAL_KAYITLAR["SICAKLIK_T2_UST"];
$GELEN_SICAKLIK_T3_ALT = $TERMINAL_KAYITLAR["SICAKLIK_T3_ALT"];
$GELEN_SICAKLIK_T3_UST = $TERMINAL_KAYITLAR["SICAKLIK_T3_UST"];
$GELEN_SICAKLIK_T1 = $TERMINAL_KAYITLAR["SICAKLIK_T1_SON_DATA"];
$GELEN_SICAKLIK_T2 = $TERMINAL_KAYITLAR["SICAKLIK_T2_SON_DATA"];
$GELEN_SICAKLIK_T3 = $TERMINAL_KAYITLAR["SICAKLIK_T3_SON_DATA"];
$GELEN_NEM_H1_ALT = $TERMINAL_KAYITLAR["NEM_H1_ALT"];
$GELEN_NEM_H1_UST = $TERMINAL_KAYITLAR["NEM_H1_UST"];
$GELEN_NEM_H2_ALT = $TERMINAL_KAYITLAR["NEM_H2_ALT"];
$GELEN_NEM_H2_UST = $TERMINAL_KAYITLAR["NEM_H2_UST"];
$GELEN_NEM_H3_ALT = $TERMINAL_KAYITLAR["NEM_H3_ALT"];
$GELEN_NEM_H3_UST = $TERMINAL_KAYITLAR["NEM_H3_UST"];
$GELEN_NEM_H1 = $TERMINAL_KAYITLAR["NEM_H1_SON_DATA"];
$GELEN_NEM_H2 = $TERMINAL_KAYITLAR["NEM_H2_SON_DATA"];
$GELEN_NEM_H3 = $TERMINAL_KAYITLAR["NEM_H3_SON_DATA"];
$GELEN_SICAKLIK_T1_AD = $TERMINAL_KAYITLAR["SICAKLIK_T1_AD"];
$GELEN_SICAKLIK_T2_AD = $TERMINAL_KAYITLAR["SICAKLIK_T2_AD"];
$GELEN_SICAKLIK_T3_AD = $TERMINAL_KAYITLAR["SICAKLIK_T3_AD"];
$GELEN_NEM_H1_AD = $TERMINAL_KAYITLAR["NEM_H1_AD"];
$GELEN_NEM_H2_AD = $TERMINAL_KAYITLAR["NEM_H2_AD"];
$GELEN_NEM_H3_AD = $TERMINAL_KAYITLAR["NEM_H3_AD"];
$GELEN_SON_DATA = $TERMINAL_KAYITLAR["GELEN_SON_DATA"];
}
// Json datasına çevrilecek diziyi yaratalım.
$json = array();
$json["Bilgiler"][] = array(
'GELEN_SERIAL'=> $GELEN_SERIAL,
'TERMINAL_ADI'=> $GELEN_TERMINAL_ADI,
'SICAKLIK_T1'=> $GELEN_SICAKLIK_T1,
'SICAKLIK_T2'=> $GELEN_SICAKLIK_T2,
'SICAKLIK_T3'=> $GELEN_SICAKLIK_T3,
'NEM_H1'=> $GELEN_NEM_H1,
'NEM_H2'=> $GELEN_NEM_H2,
'NEM_H3'=> $GELEN_NEM_H3,
'SON_DATA'=> $GELEN_SON_DATA,
);
echo json_encode($json);
}
?>
这是结果;
{"Bilgiler":
[
{"GELEN_SERIAL":"AGE6000010",
"TERMINAL_ADI":"DENEME TERM",
"SICAKLIK_T1":"23,8",
"SICAKLIK_T2":"23,9",
"SICAKLIK_T3":"23,8",
"NEM_H1":"30",
"NEM_H2":"29",
"NEM_H3":"31",
"SON_DATA":"2016-10-31 20:54:00"}
]
}{"Bilgiler":
[
{"GELEN_SERIAL":"AGE6000022",
"TERMINAL_ADI":"Eczane",
"SICAKLIK_T1":"23,0",
"SICAKLIK_T2":"23,0",
"SICAKLIK_T3":"22,9",
"NEM_H1":"21",
"NEM_H2":"21",
"NEM_H3":"30",
"SON_DATA":"2016-12-10 16:58:00"}
]
}
但是,我希望它是这个;
{"Bilgiler":
[
{"GELEN_SERIAL":"AGE6000010",
"TERMINAL_ADI":"DENEME TERM",
"SICAKLIK_T1":"23,8",
"SICAKLIK_T2":"23,9",
"SICAKLIK_T3":"23,8",
"NEM_H1":"30",
"NEM_H2":"29",
"NEM_H3":"31",
"SON_DATA":"2016-10-31 20:54:00"
},
{"GELEN_SERIAL":"AGE6000010",
"TERMINAL_ADI":"DENEME TERM",
"SICAKLIK_T1":"23,8",
"SICAKLIK_T2":"23,9",
"SICAKLIK_T3":"23,8",
"NEM_H1":"30",
"NEM_H2":"29",
"NEM_H3":"31",
"SON_DATA":"2016-10-31 20:54:00"}
]
}
我怎么能这样做,我在PHP代码中有什么变化?
答案 0 :(得分:1)
这里应该改变什么:
// previous code here
$json = array();
foreach($yenimetin as $yazdir) {
// see - each result of `bilgial` function you add to an array
$json['Bilgiler'][] = bilgial($yazdir);
}
echo json_encode($json);
bilgial
功能的变化:
function bilgial($kullanicisi)
{
$TERMINAL_BILGI_AL = @mysql_query("SELECT * FROM TERMINAL WHERE ID='$kullanicisi' ORDER BY ID ASC LIMIT 1");
// codes here.
// instead of encoding every array - return it:
// $json = array(); // this line is useles
return array(
'GELEN_SERIAL'=> $GELEN_SERIAL,
'TERMINAL_ADI'=> $GELEN_TERMINAL_ADI,
'SICAKLIK_T1'=> $GELEN_SICAKLIK_T1,
'SICAKLIK_T2'=> $GELEN_SICAKLIK_T2,
'SICAKLIK_T3'=> $GELEN_SICAKLIK_T3,
'NEM_H1'=> $GELEN_NEM_H1,
'NEM_H2'=> $GELEN_NEM_H2,
'NEM_H3'=> $GELEN_NEM_H3,
'SON_DATA'=> $GELEN_SON_DATA,
);
}
更进一步 - 你可以使用WHERE IN
sql子句并只调用你的函数一次。
正如我已经提到的那样 - 停止使用已弃用的mysql
扩展名 asap 。
答案 1 :(得分:1)
您可以采用MVC样式编码。 创建代码,并分离不同的部分。
在这里,您有以下逻辑:
Call SQL1
While on SQL1 results {
call function
Call SQL2
While on SQL2 results {
get values
}
Write json values
}
如您所见,您将有几个json电话。 所以,你应该:
Create finalVariable
Call SQL1
While on SQL1 results {
call function
Call SQL2
While on SQL2 results {
get values
}
set final values on finalVariable (return values of function ?)
}
Call json encode on finalVariable
示例:
<?php
function bilgial($param) {
// ...
return [
'GELEN_SERIAL' => $GELEN_SERIAL,
// ...
]
}
$finalValues = [];
foreach($yenimetin as $yazdir){
$finalValues['Bilgiler'][] = bilgial($yazdir);
}
echo json_encode($finalValues);