Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和MySql的JSON输出_Php_Mysql_Json_Api - Fatal编程技术网

PHP和MySql的JSON输出

PHP和MySql的JSON输出,php,mysql,json,api,Php,Mysql,Json,Api,我想用Cpanel中的PHP和MySql为自己制作货币汇率api(like),以便在currency convertor ios应用程序中使用。我用我的sql做了一个表,有两列符号和价格。问题是如何像向上链接一样显示我的json 这是我在CPANEL中的php代码: $query = "SELECT * FROM Currency "; $result = $connect->prepare($query); $result->execute(); $ou

我想用Cpanel中的PHP和MySql为自己制作货币汇率api(like),以便在currency convertor ios应用程序中使用。我用我的sql做了一个表,有两列符号和价格。问题是如何像向上链接一样显示我的json

这是我在CPANEL中的php代码:

$query = "SELECT * FROM Currency ";
 $result = $connect->prepare($query);
    $result->execute();

        $out = array();

    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {

        $record = array();

         $record["sign"] = $row["sign"];

        $record["price"] = $row["price"];

        array_push($out, $record);
    }
    echo json_encode($out);

  ?>  
我的php代码的json输出:

[{
    sign: "USD",
    price: "11298"
}, {
    sign: "EURO",
    price: "12650"
}, {
    sign: "POND",
    price: "14206"
}, {
    sign: "CAD",
    price: "8549"
}, {
    sign: "EMIRD",
    price: "37445"
}, {
    sign: "TULY",
    price: "2900"
}]

我想这样显示JSON输出:

以不同的方式构建阵列:

$myoutput = [ "rates" => [] ];
foreach ($rows as $rows)
{
  $myoutput["rates"][$row["sign"]] = $row["price"];
}
return json_encode($myoutput, JSON_PRETTY_PRINT);

您可以尝试以下方法:

 $query = "SELECT * FROM Currency";
 $result = $connect->prepare($query);
    $result->execute();
        $out = new stdClass();
        $out->date = date('Y-m-d');
        $out->base = "USD";

    $rates = new stdClass();
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
            $rates->{$row["sign"]} = $row["price"];
    }
    $out->rates = $rates;
    echo json_encode($out);
请注意:我尽可能地坚持你的例子,这样会更容易理解。然而,尽管上面的代码可以工作,但这样编写并不是一个好的实践。您应该为DB实体创建类,并避免使用std类。这里还可以进行更多的重构,但这不在本问题的范围之内。 祝你好运:)

简单就是这样, Pdo fetcAll方法和php函数json_encode


  $query = "SELECT * FROM Currency ";
  $result = $connect->prepare($query);
  $result->execute();

  $rows= $result->fetchAll(PDO::FETCH_ASSOC));

   echo json_encode($rows);


如果需要对象映射器,例如创建属性分配dbColumnName

class CurrencyClass {

   public $property;


 function __constructor()
  {
      $this->property=$this->dbColumName;
   }

}
$stmt = $pdo->query('SELECT * FROM  Currency');
$stmt->setFetchMode(PDO::FETCH_CLASS, 'CurrencyClass');
$data= $stmt->fetchAll();

echo json_encode($data);



定义“我想像这样显示JSON输出”。你能给我们看一下你的输入样本的预期输出吗?没错。还有,一旦你有了这个,我建议你在一个助手函数中创建这个while块,因为你最终会一直需要它-获取一个结果集是很常见的事情,其中一个字段作为key,另一个字段作为value.tnx作为你的答案
class CurrencyClass {

   public $property;


 function __constructor()
  {
      $this->property=$this->dbColumName;
   }

}
$stmt = $pdo->query('SELECT * FROM  Currency');
$stmt->setFetchMode(PDO::FETCH_CLASS, 'CurrencyClass');
$data= $stmt->fetchAll();

echo json_encode($data);