如何使用php将API数据(数组)存储到数据库中

时间:2017-03-31 21:49:26

标签: php mysql arrays

我在尝试将数据存储到数据库时遇到错误。我需要有关如何最好地修复此代码的帮助,以便我的数组内容可以存储在我的数据库中。当我试图回应内容时,它不会将数据存储在我的数据库中是问题。 这是我的代码:

foreach ($data['players'] as $myp) {
//    echo $myp["name"]."<br>";
    $name = $myp['name'];
    $posi = $myp['position'];
    $nation = $myp['nationality'];
    $market = $myp['marketValue'];
}

//insert into mysql table
mysql_select_db($db, $conn); //database and connection 

$date = date('Y-m-d H:m:s'); //date stamp formatting
//sql query that insert the user info into the database
$sql =  "INSERT INTO staffdb ( Name, Position, Nationality, Market, Created)       
        VALUES($name, $posi, $nation, $market, $date)";
echo $name . "<br>";
//if the connection is sucessful, display regards message
if (mysql_query($sql, $conn)) {
    echo "Thank you <br/>";
} else {   //if the connection is not established
    die('Error: ' . mysql_error());
}

以下是我遇到的错误: 错误:SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,以便在第2行“ Costa,Center Forward,Spain,45,000,000€,2017-03-31 23:03:04 ”附近使用正确的语法

在错误中它打印了正确的值,我希望将其存储在数据库中。

请更正我的SQL部分,以便将 foreach 数据导入我的数据库。

非常感谢!

4 个答案:

答案 0 :(得分:0)

您需要围绕您的值引用。此外,您应该使用PDO并绑定这些值。

$sql =  "INSERT INTO staffdb ( Name, Position, Nationality, Market, Created)       
        VALUES('$name', '$posi', '$nation', '$market', '$date')";

答案 1 :(得分:0)

您的字段名称需要单引号:

$sql =  "INSERT INTO staffdb ( Name, Position, Nationality, Market, Created)       
    VALUES('$name', '$posi', '$nation', '$market', '$date')";

您应该阅读SQL注入,因为您的代码非常容易受到攻击。

此外,您应该从foreach循环中移动结束}标记,以使其位于代码的末尾。这样,数组中的每个项目都将添加到您的数据库中。

答案 2 :(得分:0)

只需将查询中的值包装为引号:

$sql = "INSERT INTO staffdb ( `Name`, `Position`, `Nationality`, `Market`, `Created`)
      VALUES('$name', '$posi', '$nation', '$market', '$date')";

非常推荐,如何进行新的mysqliPDO扩展。

答案 3 :(得分:0)

你需要围绕你的值引用,加上你可能想要使用mysqli(据我所知,mysql_query等已被弃用)。 还有你的代码只插入了最后一个玩家..不知道这是不是你想要的?

在你的foreach中,你可以做一些像$ q。=“('$ name','$ posi','$ nation','$ market','$ date'),”;

然后在foreach循环后删除最后一个逗号$ q = rtrim($ q,“,”);

然后是sql查询:$ sql =“INSERT INTO staffdb(NamePositionNationalityMarketCreated)VALUES”。 $ q;

编辑:类似这样的事情:

$values = "";
$date = date('Y-m-d H:m:s');
foreach ($data['players'] as $myp) {
//    echo $myp["name"]."<br>";
    $name = $myp['name'];
    $posi = $myp['position'];
    $nation = $myp['nationality'];
    $market = $myp['marketValue'];

    $values .= "('$name', '$posi', '$nation', '$market', '$date'),";
}
//remove last comma
$values = substr($values, 0,-1);

//mysqli connection
$conn = mysqli_connect("host", "user", "password", "database");

//sql query that insert the user info into the database
$sql =  "INSERT INTO staffdb ( Name, Position, Nationality, Market, Created)       
        VALUES".$values;
//if the connection is sucessful, display regards message
mysqli_query($conn, $sql) or die('Error: ' . mysqli_error($conn));
echo "Thank you <br/>";