Json的问题和使用每个循环搜索

时间:2017-08-09 04:31:58

标签: php json

我正在使用一个以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;

没有它会显示错误信息。

1 个答案:

答案 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注入的危险。所以尝试使用绑定参数

希望这会对你有所帮助:)。