我正在使用一个以JSON形式返回的api,我猜这个叫做#34;对"。如果这是错误的术语,请原谅我
然后我通过查找为特定用户ID返回的json进行搜索。这恰好是两对中的第二对。
我希望获得id
的余额所以JSON会像这样回来:
{"balance":"104","id":"2264511436216725766"},
{"balance":"100","id:"13430408307535451875"},
{"balance":"160","id":"4496198869167276848"},
这就是我现在使用的:
$set="4496198869167276848";
foreach($result['Balances'] as $key=>$value){
$qty = number_format($value['balance'] / 100000, 4);
$ID= $value['id'];
if($ID == $set){
$sql = "UPDATE $table SET meta_value='$qty' WHERE user_id = '$user' AND meta_key = 'default_total' ";
if ($conn->query($sql) === TRUE) {
// echo "Record updated successfully";
} else {
// echo "Error updating record: " . $conn->error;
}
break;
} else {
$msg="<strong style='text-decoration:none;color:#289dcc;font-weight:bold'>ERROR !!! It Looks like you do not Have any Shares</strong><br>";
echo $msg;
break;
}
}
正在发生的事情是它只显示第一个余额为104
我需要它一旦找到它就停止所以我放了break;
没有它会显示错误信息。
答案 0 :(得分:1)
看这里你犯了几件错误
<强>解释强>
if($ID == $set)
比您进行更新查询更好。但是,当你第一次进行foreach循环而不是$ID != 4496198869167276848
时,它会进入else
条件,并且在else
条件下你放break
所以在第一次执行后它将会破坏&#{1}} 39;你只能获得第一笔余额所以就这样吧
$set="4496198869167276848";
foreach($result['Balances'] as $key=>$value){
$qty = number_format($value['balance'] / 100000, 4);
$ID= $value['id'];
if($ID == $set){
$sql = "UPDATE $table SET meta_value='$qty' WHERE user_id = '$user' AND meta_key = 'default_total' ";
if ($conn->query($sql) === TRUE) {
// echo "Record updated successfully";
} else {
// echo "Error updating record: " . $conn->error;
}
break;
} else {
$msg="<strong style='text-decoration:none;color:#289dcc;font-weight:bold'>ERROR !!! It Looks like you do not Have any Shares</strong><br>";
echo $msg;
}
}
只需从else
条件中删除中断
更重要的是
您的mysql查询存在sql注入的危险。所以尝试使用绑定参数
希望这会对你有所帮助:)。