2017-02-27 49 views
0

目前,我有一個頁面,其中包含超過25個字段的表單,所有表單都發布到一個抓取帖子並將它們存儲在SQL數據庫中的文件。我發現將變量分配給每個帖子值非常低效,必須有一個eaiser解決方案。PDO SQL - 插入數十個字段

這是我的例子:

/*Post Data*/ 
 
$val_1 = $_POST['val_1']; 
 
$val_2 = $_POST['val_2']; 
 
$val_3 = $_POST['val_3']; 
 

 
$query = $handler->prepare("INSERT INTO `database` (col_1, col_2, col_3) VALUES (:val_1, :val_2, :val_3)"); 
 
$query->execute([ 
 
    ':val_1' => $val_1, 
 
    ':val_2' => $val_2, 
 
    ':val_3' => $val_3 
 
]);

我覺得必須有一些種類的循環來實現這一點的方式,使我的查詢並不可笑長,這樣的混亂會是。

+0

你可以使用'str_repeat'用的'$ _ POST計數'建立佔位符。使用佔位符匹配值可能會變得雜亂無章.. – chris85

+0

您可以使用每個'$ values = array(); foreach($ _ POST爲$ key => $ value){$ values [':'。$ key] = $ value;} $ query-> execute($ values);' –

+0

將名稱放入數組中。將數組展開爲查詢。綁定與'$ _POST'。沒有理由讓這個變得複雜。 – tadman

回答

2

在一個簡單的方法:

$query = $handler->prepare("INSERT INTO `database` (col_1, col_2, col_3) VALUES (?, ?, ?)"); 
$query->execute($_POST); 

隨着str_repeat可以重複的符號多次,因爲你需要,如:

$times = 20; // or sizeof($_POST); 
$str = str_repeat('?,', $times); 
$str = rtrim($str, ','); // remove last `,` 
+0

這絕對完美無瑕。正是我在找什麼。 –

+0

看到我的更新重複'?'。 –

+0

明白了,非常感謝。當它允許我將它標記爲正確時。 –