0

我有以下我无法解决的问题,我已经尝试了所有方法,但没有任何效果。问题是我想将多个复选框值存储到数据库中,存储到其中的一列一记录中。这是我正在使用的表单代码:

<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,我正在使用具有以下存储参数的类文件:

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();

现在在单元格 field021 的数据库中没有写入任何内容,我想要做的是,能够在那里注册多个由逗号分隔的复选框。如果有人可以提供帮助,将不胜感激。谢谢

4

2 回答 2

1

你的意思是这样吗?

$this->field021_commaseparated = implode(', ', $this->field021);
  1. 假设$data=== $_POST!?
  2. 你不应该stripslashes() / strip_tags()是一个数组!
于 2013-09-27T23:22:35.507 回答
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

    ...
于 2013-09-27T23:34:36.177 回答