Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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 json插入数据库_Php_Json_Mysqli - Fatal编程技术网

Php 如何将api json插入数据库

Php 如何将api json插入数据库,php,json,mysqli,Php,Json,Mysqli,早上好,我尝试用php和api json做一些事情,使te信息从api到json数组再到mij数据库,但它没有做任何事情,有人能帮我吗 这是我的剧本 <?Php $connect = mysqli_connect("localhost","test","test","beers"); $url = file_get_contents("https://api.punkapi.com/v2/beers"); $json = json_decode($url, true); foreach

早上好,我尝试用php和api json做一些事情,使te信息从api到json数组再到mij数据库,但它没有做任何事情,有人能帮我吗

这是我的剧本

<?Php
$connect = mysqli_connect("localhost","test","test","beers");
$url = file_get_contents("https://api.punkapi.com/v2/beers");
$json = json_decode($url, true);


foreach ($json as $row) {


        $sql =  "INSERT INTO Brewdog (naam, tagline, omschrijving) VALUES ('".$row['name']."','".$row['tagline']."',,'".$row['description']."')";
        mysqli_query($connect, $sql);




}
echo "klaar is kees";
?>

简单地说,json值中可能有一个引号

旧解决方案:

安全警告:转义不足以阻止SQL注入,请使用prepared 而不是声明。使用下面概述的策略,风险自负。 (另外,在PHP7中删除了mysql_real_escape_string()

您可以使用
mysqli::real\u escape\u string
来修复它

    <?Php
$connect = mysqli_connect("localhost","test","test","beers");
$url = file_get_contents("https://api.punkapi.com/v2/beers");
$json = json_decode($url, true);

foreach ($json as $row) {

        $sql =  "INSERT INTO Brewdog (naam, tagline, omschrijving) VALUES ('".mysqli_real_escape_string($connect, $row['name'])."','".mysqli_real_escape_string($connect, $row['tagline'])."',,'".mysqli_real_escape_string($connect, $row['description'])."')";
        mysqli_query($connect, $sql);

}
echo "klaar is kees";
?>

它不会做任何事情,因为您的SQL查询有问题

我建议您这样编写SQL查询:

$sql = "INSERT INTO Brewdog (naam, tagline, omschrijving) VALUES ('$row[name]','$row[tagline]','$row[description]')";
我认为它更容易阅读

您可能希望看到SQL错误,所以请使用

if (mysqli_query($connect, $sql)) {
    echo "Record Created";
} else {
    echo mysqli_error($connect);
}
更新


我检查了api,在你的
标语中有一些
你应该在第10行
中使用(“$row['name'.]”,“,“$row['tagline'.]”,“,”。$row['description'.”)";
你在标语和描述之间放置了2个
。我已经去掉了,但它不起作用。也许你的json值中只有一个引号
,我已经尝试过了,但它不起作用。我建议使用
mysqli\u查询($connect,$sql)
只需将
$sql
的结果添加到一个数组中,然后打印它并检查每个sql<代码>$logarray=[];foreach($json作为$row){$sql=“插入…”;//mysqli_查询($connect,$sql);$logarray[]=$sql}var_转储($logarray)
它返回数组(25){[0]=>string(75)“插入
Brewdog
naam
tagline
omschrijving
)值(“”,“,”)”[1]=>string(75)“确保
$json
$row
具有值我已尝试过此方法,但不起作用。”my@fathi因此,当您添加
mysqli\u error
时,您的错误是什么?您的代码容易受到SQL注入的攻击。您应该使用准备好的语句。
if (mysqli_query($connect, $sql)) {
    echo "Record Created";
} else {
    echo mysqli_error($connect);
}