Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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读取API数据并将其插入MYSQL_Php_Mysql - Fatal编程技术网

如何使用php读取API数据并将其插入MYSQL

如何使用php读取API数据并将其插入MYSQL,php,mysql,Php,Mysql,因此,我尝试从API获取转换率,并获得以下数据: <?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $passwor

因此,我尝试从API获取转换率,并获得以下数据:

  <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDB";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
        $json = json_decode($string, true);


        foreach($json['rates'] as $date =>$conversion){
            $sql = "INSERT INTO Mytable (id, date, conversion)
                    VALUES ( '$date', ".$conversion['EUR'].")";

            if ($conn->query($sql) === TRUE) {
                echo "New record created successfully"."<br>";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error."<br>";
            }

        }
        $conn->close();
        ?>

  <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDB";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
        $json = json_decode($string, true);


        foreach($json['rates'] as $date =>$conversion){
            $sql = "INSERT INTO Mytable (id, date, conversion)
                    VALUES ( '$date', ".$conversion['EUR'].")";

            if ($conn->query($sql) === TRUE) {
                echo "New record created successfully"."<br>";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error."<br>";
            }

        }
        $conn->close();
        ?>
如何循环数据并将日期和转换率插入MYSQL数据库

  <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDB";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
        $json = json_decode($string, true);


        foreach($json['rates'] as $date =>$conversion){
            $sql = "INSERT INTO Mytable (id, date, conversion)
                    VALUES ( '$date', ".$conversion['EUR'].")";

            if ($conn->query($sql) === TRUE) {
                echo "New record created successfully"."<br>";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error."<br>";
            }

        }
        $conn->close();
        ?>
非常感谢您的帮助

  <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDB";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
        $json = json_decode($string, true);


        foreach($json['rates'] as $date =>$conversion){
            $sql = "INSERT INTO Mytable (id, date, conversion)
                    VALUES ( '$date', ".$conversion['EUR'].")";

            if ($conn->query($sql) === TRUE) {
                echo "New record created successfully"."<br>";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error."<br>";
            }

        }
        $conn->close();
        ?>
我现在站在这里:

$host="localhost";
$user="conversion";
$pass="password";
$db="areporting";
$connect= new mysqli($host,$user,$pass,$db) or die("ERROR:could not connect 
to the database!!!");


$string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
$json = json_decode($string, true);


var_dump($json);
  <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDB";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
        $json = json_decode($string, true);


        foreach($json['rates'] as $date =>$conversion){
            $sql = "INSERT INTO Mytable (id, date, conversion)
                    VALUES ( '$date', ".$conversion['EUR'].")";

            if ($conn->query($sql) === TRUE) {
                echo "New record created successfully"."<br>";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error."<br>";
            }

        }
        $conn->close();
        ?>
下面是我获得的数据的屏幕截图:

您可以在json结果上使用foreach:

  <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDB";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
        $json = json_decode($string, true);


        foreach($json['rates'] as $date =>$conversion){
            $sql = "INSERT INTO Mytable (id, date, conversion)
                    VALUES ( '$date', ".$conversion['EUR'].")";

            if ($conn->query($sql) === TRUE) {
                echo "New record created successfully"."<br>";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error."<br>";
            }

        }
        $conn->close();
        ?>

您可以在json结果上使用foreach:

  <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDB";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
        $json = json_decode($string, true);


        foreach($json['rates'] as $date =>$conversion){
            $sql = "INSERT INTO Mytable (id, date, conversion)
                    VALUES ( '$date', ".$conversion['EUR'].")";

            if ($conn->query($sql) === TRUE) {
                echo "New record created successfully"."<br>";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error."<br>";
            }

        }
        $conn->close();
        ?>

感谢所有提示,这里是我的工作解决方案:

  <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDB";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
        $json = json_decode($string, true);


        foreach($json['rates'] as $date =>$conversion){
            $sql = "INSERT INTO Mytable (id, date, conversion)
                    VALUES ( '$date', ".$conversion['EUR'].")";

            if ($conn->query($sql) === TRUE) {
                echo "New record created successfully"."<br>";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error."<br>";
            }

        }
        $conn->close();
        ?>
foreach($json['rates'] as $date => $conversion){

$timestamp = strtotime($date);
$sql = "INSERT INTO m_fx_rate_temp
(`base`, `counter`, `fxRate`, `date`) VALUES ('gbp', 'eur', ".$conversion['EUR'].", Date_format(FROM_UNIXTIME($timestamp), '%Y-%m-%d'))";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully"."<br>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error."<br>";
}

}
foreach($json['rates']as$date=>$conversion){
$timestamp=strottime($date);
$sql=“插入到m\U fx\U汇率\U温度
(`base`、`counter`、`fxRate`、`date`)值('gbp'、'eur'、“$conversion['eur']”、日期格式(FROM_UNIXTIME('timestamp),'%Y-%m-%d'));
if($conn->query($sql)==TRUE){
回显“已成功创建新记录”。
; }否则{ echo“Error:”.sql.“
”$conn->Error.
”; } }
感谢所有提示,这里是我的工作解决方案:

  <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDB";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        $string = file_get_contents("https://api.exchangeratesapi.io/history?start_at=2017-01-01&end_at=2018-09-01&symbols=EUR&base=GBP");
        $json = json_decode($string, true);


        foreach($json['rates'] as $date =>$conversion){
            $sql = "INSERT INTO Mytable (id, date, conversion)
                    VALUES ( '$date', ".$conversion['EUR'].")";

            if ($conn->query($sql) === TRUE) {
                echo "New record created successfully"."<br>";
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error."<br>";
            }

        }
        $conn->close();
        ?>
foreach($json['rates'] as $date => $conversion){

$timestamp = strtotime($date);
$sql = "INSERT INTO m_fx_rate_temp
(`base`, `counter`, `fxRate`, `date`) VALUES ('gbp', 'eur', ".$conversion['EUR'].", Date_format(FROM_UNIXTIME($timestamp), '%Y-%m-%d'))";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully"."<br>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error."<br>";
}

}
foreach($json['rates']as$date=>$conversion){
$timestamp=strottime($date);
$sql=“插入到m\U fx\U汇率\U温度
(`base`、`counter`、`fxRate`、`date`)值('gbp'、'eur'、“$conversion['eur']”、日期格式(FROM_UNIXTIME('timestamp),'%Y-%m-%d'));
if($conn->query($sql)==TRUE){
回显“已成功创建新记录”。
; }否则{ echo“Error:”.sql.“
”$conn->Error.
”; } }
json_decode()
会有所帮助。您可以通过将数据解码到数组中,在数组上循环,然后为数组的每一行构造一个带有子句的INSERT语句,然后执行该语句来实现。到目前为止你尝试了什么?我不确定如何循环我得到的数据。。。正常情况下,我会用forach循环,但我似乎无法正确循环。到底发生了什么问题?您是否先将JSON解码为数组?JSON看起来像什么?只需添加一个屏幕截图
JSON_decode()
就可以了。您可以通过将数据解码到一个数组中,在数组上循环,然后为数组的每一行构造一个带有子句的INSERT语句,然后执行该语句。到目前为止你尝试了什么?我不确定如何循环我得到的数据。。。正常情况下,我会用forach循环,但我似乎无法正确循环。到底发生了什么问题?您是否先将JSON解码为数组?JSON看起来像什么?只是添加了一个屏幕截图,你发布的foreach循环不起作用。我得到了逻辑,但数据我没有设法循环通过现在我更新了我的代码我在$date->EUR上有错误现在它变成了conversion->EUR1。这可以通过构造一个包含多个子句的INSERT语句来实现(插入所需的每行一个子句),这在SQL端比运行INSERT几十次要快得多。2.使用参数化查询将是更好的解决方案(为了避免语法错误和SQL注入攻击-我们不应该信任来自远程源的数据,即使我们认为我们知道其中将包含什么,我们也不能保证它不会被破坏)@ADyson你的意思是将其保存在一个数组中,然后将数据内爆为一个查询?@Michael“我只是不知道如何在$json['rates']上循环遍历数组”。。。您可以使用
foreach($json['rates']as$date=>$conversion){
进行循环,这与这个答案完全一致。这个语法甚至很好地为您提供了键($date)和值($conversion)对于数组中的每个条目。如果您不确定如何创建循环,我建议您学习手册中的PHP循环语法…您发布的foreach循环不起作用。我得到了逻辑,但我没有成功循环的数据。现在我更新了代码,我在$date->EUR上出错,现在它变成了conversion->EUR1。这可以由constr完成使用包含多个子句的单个INSERT语句(插入所需的每行一个子句),在SQL端比运行INSERT几十次要快得多。2.使用参数化查询将是更好的解决方案(为了避免语法错误和SQL注入攻击-我们不应该信任来自远程源的数据,即使我们认为我们知道其中将包含什么,我们也不能保证它永远不会被破坏)@ADyson你的意思是将其保存在数组中,然后将数据内爆为一个查询?@Michael“我只是不知道如何在$json['rates']上循环数组”…您可以使用
foreach($json['rates']as$date=>$conversion){
完全按照这个答案进行循环。这个语法甚至很好地为您提供了键($date)和值($conversion)对于数组中的每个条目。如果您不确定如何创建循环,我建议您学习手册中的PHP循环语法。。。