php - 在 php 中以编程方式声明和初始化变量

标签 php html mysql forms

<分区>

我确信有更好的方法来做到这一点,我只是不知道该怎么做。基本上,我正在向一个页面提交一个表单,该页面将获取信息并将其填充到 MYSQL 数据库中。目前我已经设置好了,所以我声明变量并从 _POST 设置它的值,然后将它添加到正确的 MYSQL 列。这是一个片段:

$k1 = $_POST['k1'];
$k2 = $_POST['k2'];
$k3 = $_POST['k3'];
...

$sql = "INSERT INTO patches (k1, k2, k3, ...) VALUES ('$k1', '$k2', 'k3', ... )";

显然,对于大量的字段,这很麻烦。 我可以采取哪些措施来改善这一点?谢谢!

最佳答案

假设每个帖子字段都是一个表格列,您可以这样做。

$keys = implode(',', array_keys($_POST));

$values = implode(',', array_map(function($value) {
    return "'". addslashes($value) ."'";
}, array_values($_POST)));

$sql = "INSERT INTO patches ($keys) VALUES ($values)";

不幸的是,这种方法很容易受到 SQL 注入(inject)的攻击。更好的方法是类似的方法,但准备语句并使用 PDO 绑定(bind)值。

$keys = implode(',', array_keys($_POST));
$params = implode(',', array_fill(0, count($_POST), '?'));

$sql = $dbHandle->prepare("INSERT INTO patches ($keys) VALUES ($params)");

$sql->execute(array_values($_POST));

其中 $dbHandle 是 PDO 连接资源。您可以找到有关 PDO 的更多信息 here .

关于php - 在 php 中以编程方式声明和初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20867051/

相关文章:

javascript - 如何在 DIV 中选择带有类的项目?

javascript - 有什么办法可以避免 Canvas 中的跨域图像问题?

php - 处理数据修改

php - MySQL数据库设计

php - fatal error : Uncaught TypeError: Unsupported operand types: string + int in

php - 在 Symfony Controller 中访问容器

java - 使用 RegEx 查找两个 XML 标记之间的所有内容

php - Angular HTML5 模式,路由器将在页面重新加载时进行其他说明

javascript - 如何将 onchange 绑定(bind)到每个单选按钮组

mysql - 优化 MySQL 查询时出现问题