1

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

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

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

$result = mysqli_query($dbc, $query);

我能够创建字符串,并且它们的格式似乎正确,但是没有插入该行。似乎是一种简单的方法,但不确定我缺少什么。

4

2 回答 2

9

正如@Barmar 所指出的,问题在于您的引号位于变量之外。

我认为这可能比 Barmar 发布的方法更容易遵循/更清洁的方法来解决这个问题:

$newdata = "'" . implode("','", $_POST) . "'";
于 2013-07-19T23:58:42.197 回答
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);
于 2013-07-19T23:45:58.690 回答