尝试使用sprintf时,为什么会出现“基表或未找到视图”? [关闭]

问题描述:

$sql = sprintf(
    'insert into $s ($s) values ($s)',
    $table,
    implode(', ', array_keys($parameters)),
    ':' . implode(', :', array_keys($parameters))
);
try {
    $statement = $this->pdo->prepare($sql);
    $statement->execute($parameters);
} catch (Exception $e) {
    die($e->getMessage());
}

OTHER FILE:

$query->test('todos', [
    'description' => $_POST['name'] . ' ' . $_POST['lastName'],
    'completed' => isset($_POST['finished'])
]);

It's weird cause if I do it manually instead it works perfectly

 $sql = "insert into $table (description, completed) values (:description, :completed)";

But when I use sprintf and implode it gives me an error saying "base table or view not found" Any ideas why?

Because you're using $. PHP Documentation For sprintf

$sql = sprintf(
    'insert into %s (%s) values (%s)',
    $table,
    implode(', ', array_keys($parameters)),
    ':' . implode(', :', array_keys($parameters))
);

https://3v4l.org/2oEsT