1

我正在使用 DHTMLX javascript 库以表格形式呈现网格。我的用户在他们的网格中可能有数百种产品,但我只捕获他们添加价格的行。然后,我需要将这些行与其他一些信息一起添加到 MySQL 数据库中。

获取标准 $POST 信息并在我的 PHP 脚本中对其进行操作是我目前技能的极限,所以我需要帮助的地方是由更新的行创建的数组。在我的 $POST 中捕获的一个示例是:

Array
(
    [product] => 64
    [dept] => 000
    [submit] => Submit
    [gridbox_1_4] => 422
    [gridbox_64_4] => 534
    [gridbox_175_4] => 1234
    [gridbox_180_4] => 645
)

我目前使用以下方法捕获基本的 $POST 变量:

$itemcat  = filter($_POST['product']);         
$dept7    = filter($_POST['dept']);

我的问题是如何捕获网格框变量,以便可以在 INSERT 语句中使用它们?唯一会改变的数字是中间数字,它代表我的数据库中我需要插入另一个表的产品的主键。我假设我需要以某种方式爆炸 $POST 变量?然后我如何使用类似的东西插入它们:

"INSERT INTO submissions 
                       (product_id, user_id,submission_id, sugg_price) 
                        VALUES ('" . $gridbox_id . "','" . $myid . "','NULL', '" . $sugg . "')";

我今天所有关于阵列的阅读都让我很好地理解了它们是如何从 100 英尺的角度工作的,但不知道如何专门解决我的问题,甚至不知道如何开始。我希望社区可以让我走上正确的道路。

4

1 回答 1

2

您可以遍历数组并对每个键$_POST执行正则表达式匹配:

// PDO will make your life so much easier
$dbh = new PDO('mysql:dbname=testdb;host=127.0.0.1', $user, $password);

// prepared statements are great - prepare once, use many
$stmt = $dbh->prepare('
  INSERT INTO submissions
    ( product_id,  user_id, submission_id,  sugg_price)
  VALUES
    (:product_id, :user_id, NULL         , :sugg_price)
');

// avoid SQL injection by passing your variables in as parameters
// see http://bobby-tables.com to understand why
$stmt->bindValue('user_id', $myid);

foreach ($_POST as $key => $val) {
  if (preg_match("/^gridbox_(\d+)_4$/", $key, $matches)) {
    $stmt->execute(array(
      ':product_id' => $matches[1],
      ':sugg_price' => $val
    ));
  }
}
于 2012-04-29T09:02:31.247 回答