我在尝试将数据存储到数据库时遇到错误。我需要有关如何最好地修复此代码的帮助,以便我的数组内容可以存储在我的数据库中。当我试图回应内容时,它不会将数据存储在我的数据库中是问题。 这是我的代码:
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 数据导入我的数据库。
非常感谢!
答案 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')";
非常推荐,如何进行新的mysqli
或PDO
扩展。
答案 3 :(得分:0)
你需要围绕你的值引用,加上你可能想要使用mysqli(据我所知,mysql_query等已被弃用)。 还有你的代码只插入了最后一个玩家..不知道这是不是你想要的?
在你的foreach中,你可以做一些像$ q。=“('$ name','$ posi','$ nation','$ market','$ date'),”;
然后在foreach循环后删除最后一个逗号$ q = rtrim($ q,“,”);
然后是sql查询:$ sql =“INSERT INTO staffdb(Name
,Position
,Nationality
,Market
,Created
)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/>";