implode()数组将记录插入mySql数据库

use*_*681 1 php mysqli insert implode

我在PHP数组中有一行,我想通过将键和值插入字符串并在我的Insert语句中使用这些字符串将该行插入mySQL数据库,如下所示:

$fields = implode(",", array_keys($_POST));
$newdata = implode(",", $_POST);

$query = (
"INSERT INTO Food_entered ($fields)
VALUES ('$newdata')");

$result = mysqli_query($dbc, $query);
Run Code Online (Sandbox Code Playgroud)

我能够创建字符串,它们看起来是正确的形式,但是没有插入行.看起来像一个简单的方法,但不知道我错过了什么.

Jor*_*dan 9

正如@Barmar指出的那样,问题是你的引号是在变量的外面.

我认为这可能比Barmar发布的方法更容易理解或更清晰:

$newdata = "'" . implode("','", $_POST) . "'";
Run Code Online (Sandbox Code Playgroud)


Bar*_*mar 6

您需要引用每个值,而不是整个值列表:

$fields = implode(",", array_keys($_POST));
$newdata = implode(",", array_map(function($x) use ($dbc) {
    return "'" . $dbc->real_escape_string($x) . "'";
}, $_POST));

$query = (
"INSERT INTO Food_entered ($fields)
VALUES ($newdata)");

$result = mysqli_query($dbc, $query);
Run Code Online (Sandbox Code Playgroud)