PHP MySQL数据库插入问题

3
我正在使用PHP构建一个MySQL数据库,以从纽约时报API导入JSON数据。我已经构建好了所有内容,并包含了下面的脚本,但是当我尝试将记录插入数据库时,似乎无法完全完成插入函数或将记录实际插入到数据库中,这让我感到非常困惑。请问有什么原因或如何进行调整?非常感谢。
MakeDatabase.php -
<?php

function PullData($url,$adx_keywords,$title,$abstract)
{
    $json = file_get_contents("http://api.nytimes.com/svc/mostpopular/v2/mostviewed/arts,sports/30.json?api-key=1a8bc0eb977b14db91dea9318942608b%3A14%3A72549166");
    $json_decoded=  json_decode($json,true);

    foreach ($json_decoded['results'] as $articles){
        array_push($url,$articles['url']);
        array_push($adx_keywords,$articles['adx_keywords']);
        array_push($title,$articles['title']);
        array_push($abstract,$articles['abstract']);
    }

}

function MakeDatabase($conn,$db_NAME)
{


// Create database
        $sql_createDB = "CREATE DATABASE IF NOT EXISTS " . $db_NAME;

        if ($conn->query($sql_createDB) === TRUE) {
             echo "Database linked successfully <br>";
      } else {
        echo "Error creating database: " . $conn->error;
}
}

function createTable($tablename, $db_NAME, $conn, $fields)
{
    mysqli_select_db($conn, $db_NAME);

        $sql_create = "CREATE TABLE IF NOT EXISTS $tablename (
                id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
                $fields[0] TEXT,
                $fields[1] TEXT,
                $fields[2] TEXT,
                $fields[3] TEXT
                )";    

        if ($conn->query($sql_create) === TRUE) {
            echo "Table Articles created successfully <br>";
        } else {
            echo "Error creating table: " . $conn->error . "<br>";
        }

}

function insertRecords($array,$fieldname, $conn, $db_NAME)
{
    mysqli_select_db($conn, $db_NAME);
    foreach ($array as $records)
    {
        $sql_insert="INSERT INTO tbl_articles('$fieldname')"
                . "VALUES('$records')";

        echo $sql_insert . "<br>";

        if(mysqli_query($conn, $sql_insert))
        {
            echo "Records Inserted.";
        }
        else 
        {
            die('Error : ' . mysqli_error($conn) . "<br>");
        }
    }
}




?>

index.php-

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require 'MakeDatabase.php';

        $db_NAME="nytimesnews";
        $tblName="tbl_articles";
        $fields=array('url','adx_keywords','title','abstract');

        $servername = "localhost";
        $username = "root";
        $password = "";

        $url=array();
        $adx_keywords=array();
        $title=array();
        $abstract=array();

        // Create connection
        $conn = new mysqli($servername, $username, $password);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
} 

        MakeDatabase($conn,$db_NAME);
        PullData($url,$adx_keywords,$title,$abstract);
        createTable($tblName, $db_NAME, $conn, $fields);
        insertRecords($url, 'url', $conn, $db_NAME);
        insertRecords($adx_keywords, 'keywords', $conn, $db_NAME);


        $conn->close();
        ?>
    </body>
</html>

1
有任何错误显示吗?错误报告开启了吗? - Script47
是的,它们都存在。该脚本可以完成所有操作,但无法插入记录。 - Thomas
1
@Thomas,这是你从代码中复制的插入查询语句。$sql_insert="INSERT INTO tbl_articles('$fieldname')" . "VALUES('$records')"; 有没有注意到什么问题? - Script47
正如@Script47所指出的那样,您没有正确插入。 - Tim Biegeleisen
发出来吧...我还不是100%清楚...我怀疑他没有展开到INSERT的术语,而是一个接一个地迭代这些术语。 - Tim Biegeleisen
显示剩余6条评论
1个回答

4

我不确定这个方法能否解决问题,但是你的insert查询语句有错误。

你的查询语句:

$sql_insert="INSERT INTO tbl_articles('$fieldname')" . "VALUES('$records')";

它应该是什么?

(这是需要翻译的内容)
$sql_insert = "INSERT INTO `tbl_articles` (`" . $fieldname . "`) VALUES ('" . $records . "')";

我对其进行了重新格式化,以使其更清晰易懂。

此外,如果尚未开启,请打开错误报告功能,以便于您和我们进行调试。这样,您就可以知道哪些错误被抛出,并且可以修复它们或者告诉我们在代码的哪个部分出现了问题。

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);

嗯……这个 ('" . $fieldname . "') 可能会有问题。列不应该使用引号 '(通常是值使用),而应该使用反引号。我不知道如何在此处将反引号格式化为代码,但是对于两者都用 \`` 替换 '` 可能是需要的。只是一个想法,在您的原始答案下面加上一个侧记。 - Funk Forty Niner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接