阅读表单数组

时间:2011-11-14 02:00:17

标签: php mysql

我有上一篇文章,我需要更改我的HTML表单以接受数组。 This post包含代码的完整详细信息。

所以我相应地改变了所有形式,例如:

<select name="camera_type[]">

但现在我仍然坚持如何运行更新查询。现在我将所有内容存储在一个数组中,显然我不能按原样使用我的查询。这篇文章似乎正是我的需要,但我不确定我理解:Update MySQL table with an Array using Foreach

对此有任何进一步的帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

对提交的值使用foreach loop。然后,您可以迭代整个数组并根据需要构建查询。

例如:您有一个$ _POST ['camera_type']变量,该变量是从浏览器提交的。在您的PHP脚本中执行以下操作。

foreach($_POST['camera_type'] as $value) {
  //do your processing.
}

答案 1 :(得分:1)

为了帮助理解循环数组并运行UPDATE个查询,请查看:

// first setup your MySQLi connection
$db = new mysqli('localhost', 'user', 'pass', 'dbname');

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit;
}

// disable autocommit for transactions
$db->autocommit(false);

// **EDIT** forgot to escape input data. fixed now. note the mysqli_real_escape_string() and int type casting
foreach ($_POST['camera_type'] as $type) {
    // assuming 'id' is set in the POST array
    $query = sprintf(
        'UPDATE table SET column = "%s" WHERE id = %d', 
        $db->real_escape_string($type), 
        (int) $_POST['id']
    );
    $db->query($query);
}

// commit transactions (or commit the updates that were run) and then close
$db->commit();
$db->close();