我一直在遵循Laracasts“ PHP Practitioner”系列以帮助我基本了解PHP,目前,我的代码可以正常工作并且不会返回任何错误,但是我不太了解它是如何实现的确实有效。
如果您在Episode 20的QueryBuilder.php文件中观看了该系列,我们将创建一个带有2个参数“ $ table”和“ $ parameters”的insert方法。我知道为什么将“ $ table”分配给add-name.php文件中的“ users”表时有效,但是表单中的文本如何通过$ parameters参数提交给数据库?我没有很好地遵循逻辑,我只想完全了解这里发生的事情。
对于那些还没看完电视剧又不知道我在说什么的人,我们基本上制作了一个带有输入和提交按钮的简单表格,这时,我们将从形成一个数据库。这是QueryBuilder.php文件中的代码片段:
public function insert($table, $parameters)
{
$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());
}
}
这是add-name.php文件:
<?php
$app['database']->insert('users', [
'name' => $_POST['name']
]);
header('Location: /laracasts/PHP');
答案 0 :(得分:1)
请看看这个https://www.php.net/manual/en/book.pdo.php
PDO的工作方式允许您定义查询结构,然后向其中添加值。这样做是为了拒绝SQL注入。
$statement = $this->pdo->prepare($sql);
$statement->execute($parameters);
在第一行中,您正在准备定义的查询,告诉PDO您要运行哪种查询。 在第二行中,您实际运行它,将您的参数绑定到查询。