【问题标题】:Loop through POST array and update database循环遍历 POST 数组并更新数据库
【发布时间】:2013-12-20 14:44:56
【问题描述】:

我有一个 PHP 页面,它根据从 MySQL 数据库接收到的数据动态生成表单。例如,假设有一个 Logo URL 条目,它会如下:

configName = MainLogoURL; configValue = "blah"; 

这是一般的想法。我正在努力完成的任务是更新数据库,所有数据都是通过 POST 请求发送的。最终结果是这样的

Array ( 
       Array ( configName => "MainLogoURL", configValue => "BLAH 2" )
)

显然,该结构中每个变量都会有更多的数组。如果有更有效的方法,请告诉我(以及如何做),或者你能告诉我如何做。

【问题讨论】:

  • 必须为每个帖子值构建数据库表吗?
  • 每个值都遵循相同的结构,所以是的。
  • 你只需要使用 foreach($_POST as $key=>$value) 并获取所有提交的值。
  • 但是我如何将它变成一个 MySQL 查询呢?我正在努力使其尽可能高效。
  • 使用 PDO 并准备语句 php.net/pdo.prepared-statements

标签: php mysql arrays mysqli


【解决方案1】:

就像有些人说的...使用 pdo,在你的情况下应该是这样的:

$dbh = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $dbh->prepare("INSERT INTO myTable (configName, configValue) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

$myArray = Array ( 
   Array ( "configName" => "MainLogoURL", "configValue" => "BLAH 2" )
)


foreach($myArray as $arr)
{
    $name  = $arr['configName'];
    $value = $arr['configValue'];
    $stmt->execute();
}

发布这个是因为你说你想要一个样本:)

【讨论】:

  • 当然如果你想更新你必须改变声明:)
  • 你可以看看pdo stored procedur 这看起来你可以做一些事情来让它更好地运行......如果有很多数组条目:) 但我仍然很高兴我可以帮助:)
【解决方案2】:

正如 Yatin 所说,foreach($_POST as $key => $value) 是一个好的开始。

你应该看看MySQL documentation for REPLACE statements。这应该允许您使用单个语句插入多个值。

PHP manual has PDO examples 可以帮助您入门,还有几个正在工作的PDO multiple insert examples here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多