2013-09-27 83 views
0

我遇到以下問題,我無法解決這個問題,我嘗試了一切,沒有任何工作。問題是我想將多個複選框的值存儲到數據庫中,並將其中的一條記錄存入一列。下面是我使用的表單代碼:如何使用PDO連接將多個複選框存儲到數據庫中

<label for="newsletter1">PRIMARIA:</label> 
<input type="checkbox" name="field021[]" value="1" /> 1 
<input type="checkbox" name="field021[]" value="2" /> 2 
<input type="checkbox" name="field021[]" value="3" /> 3 

爲PHP我使用具有以下storring parameteres一個類文件:

public function __construct($data = array()) { 
if(isset($data['field021'])) $this->field021 = stripslashes(strip_tags($data['field021'])); 


public function storeFormValues($params) { 
//store the parameters 
$this->__construct($params); 
} 

public function register() { 
$correct = false; 
try { 
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$sql = "INSERT INTO users(field021) VALUES(:field021)"; 


$stmt = $con->prepare($sql); 
$stmt->bindValue("field021", $this->field021, PDO::PARAM_STR); 
$stmt->execute(); 

現在沒有什麼是越來越writen在數據庫中cell field021,我想要做的是,能夠在那裏註冊乘以逗號分隔的複選框。如果任何人都可以提供幫助,我們將非常感謝。謝謝

回答

0
public function __construct($data = array()) { 

    if(isset($data['field021'])) { 

     // wrong: $data['field021'] is an array, so don't stripslashes()/strip_tags() 
     //$this->field021 = stripslashes(strip_tags($data['field021'])); 

     $this->field021 = array(); 
     foreach ($data['field021'] AS $key => $value) { 
      $this->field021[$key] = stripslashes(strip_tags($value)); 
     } 

     // STRING      ARRAY 
     // | |       | | 
     // V V       V V 
     $this->field021 = implode(', ', $this->field021); 

    } // end if 

    ... 
+0

的名稱,它使得tick變得非常好,謝謝! –

1

你的意思是那樣嗎?

$this->field021_commaseparated = implode(', ', $this->field021); 
  1. 假設$data === $_POST!?
  2. 你不應該stripslashes()/strip_tags()一個數組!
+0

通常當我使用的代碼,而無需陣列 1則在數據庫中的最後一個或最高值把選擇的框。一旦我使用 name =「field021」[]它沒有放置任何東西。 –

+0

因爲你做錯了......目前你有一個數組,但不要那樣對待它。 – djot

+0

這是$ _POST公共函數storeFormValues($ PARAMS){ \t \t \t //存儲參數 \t \t \t $此功能 - > __構建體($ PARAMS); } –

相關問題