2012-04-29 23 views
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']); 

我的問題是我怎麼捕捉gridbox變量,這樣我就可以在INSERT語句中使用它們?唯一會改變的數字是代表我數據庫中主鍵的中間數字,用於我需要將其插入另一個表中的產品。我假設我需要爆炸$ POST變量莫名其妙?然後,我怎麼使用類似插入它們:

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

陣列上所有我的閱讀今天給我的,他們從100英尺視圖是如何工作的一個很好的理解,但不具體如何解決我的問題,甚至如何開始。我希望社區能把我送到正確的道路上。

回答

2

可以loop$_POST陣列,並執行在各鍵regular expression match

// 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 
    )); 
    } 
} 
+0

-1只是* *提準備的語句沒有實際的例子,但只有愚蠢無用的漫畫,而不是 – 2012-04-29 09:20:09

+0

@YourCommonSense:我做然而鏈接到解釋它們的網站;現在更新爲包含示例。除此之外,考慮到答案仍然完全解決了OP的問題,我認爲這不值得*倒下*。 – eggyal 2012-04-29 09:20:40

+0

是的,這就是原因 – 2012-04-29 09:22:39