我确信有更好的方法来做到这一点,我只是不知道该怎么做。基本上,我正在向一个页面提交一个表单,该页面将获取信息并将其填充到 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 .