1

これは、データベースに挿入する複数の行を作成しようとするために使用している形式です。

  <input name="input[]" type="checkbox" value="0" id="input_0" /> Directional<br /> <br/>
  <input name="input[]" type="checkbox" value="1" id="input_1" /> Technical <br />
  <br />
  <input name="input[]" type="checkbox" value="2" id="input_2" /> Reference <br />
  <br />
  <input name="input[]" type="checkbox" value="3" id="input_3" /> Research <br />
  <br />
  <input name="input[]" type="checkbox" value="4" id="input_4" /> Phone <br /></h3>

  <input type="submit" name="button" id="button" value="Submit Tally" style="height: 25px; width: 100px">
  </Form>

implode を使用してチェックボックス フォームから mysql データベースに複数の行を挿入するという現在の問題。この問題を解決するためにループは機能しますか? チェック ボックスをオンにすると、配列 (#、#、#、#) が表示されます

  $type = $_POST['input'];
 // $sid = $_SERVER['REMOTE_ADDR'];
  $user = $_POST['user'];

  if(count($type) > 0)
  {
  $type_string = implode(',', $type);

  }
  $sql = "INSERT INTO tally (tid, sid, uid, date, time, catid) 
      VALUE (NULL, 1, '$user', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '$type_string')";


        mysql_query($sql) or die(mysql_error());
     echo "Success";

     print_r($type_string);
4

3 に答える 3

0

$type以下のように の値を計算します。

  $i=0;
  foreach ($_POST as $v) {
   if(isset($v['input'.$i])) {
    $type = $v; 
    $i++;
   }
  }
于 2012-09-22T00:10:40.297 に答える
0

入力として受け取った $type 変数からいくつかの配列を作成し、これを一度に 1 つずつクエリにフィードした後、ループは確かに機能します。

しかし、このコードをこのような Web サイトで使用しないことを願っています。maiotano84 さんがすでにコメントしているように、クエリの作成方法は少し危険です。データで不要なことを行うのは非常に簡単です。少なくとも、次のような関数を介して変数を配置する必要があります

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier = NULL ] )

php.netサイトからこの関数に関する詳細情報を次に示します。

于 2012-09-21T23:16:38.983 に答える