动态属性和值保存到数据库

时间:2017-02-16 21:47:14

标签: php mysql codeigniter codeigniter-3

我有一个数据库表,如:

id |标题|地址

我有一个像截图一样的表格......

enter image description here

我试过那样的

<div class="col-md-6">
  <input type="text" class="form-control " style="border-radius: 0px;" placeholder="Tittle" id="slider" name="title[]">
</div>
<div class="col-md-6">
  <input type="text" class="form-control col-md-6" style="border-radius: 0px;" placeholder="Link" id="slider" name="url[]">
</div>

提交结果是:

Array
(
    [0] => Array
        (
            [title] => test1
        )

    [1] => Array
        (
            [url] => #1
        )

    [2] => Array
        (
            [title] => test2
        )

    [3] => Array
        (
            [url] => #2
        )

    [4] => Array
        (
            [title] =>title3
        )

    [5] => Array
        (
            [url] => #3
        )

)

问题是我无法过滤title1的哪个url,以及标题2等的哪个url。

有没有办法得到像这个数组的结果?

Array
(
    [0] => Array
        (
            [title] => test1,
            [url] => #1

        )

    [1] => Array
        (
            [title] => test2,
            [url] => #2
        )

    [2] => Array
        (
            [title] => test3,
            [url] => #3
        )


  )

1 个答案:

答案 0 :(得分:0)

每个字段的名称应以[]结尾。例如

<input type="text" class="form-control " style="border-radius: 0px;" placeholder="Tittle" id="slider" name="titles[name][]">

这将使它们在PHP脚本中的数组中可用,然后您可以迭代,形成查询。

  $Q = 'insert into mytable (name, value) values ';
  $V = [];

  foreach ($titles as $idx => $title) {
    $V[] = "('".$title['name']."','".$title['value']."')";
  }
  $Q.= implode(',', $V);

[编辑]

好的,让你的字段看起来像这样

<INPUT TYPE=TEXT NAME="data[title][]">
<INPUT TYPE=TEXT NAME="data[url][]">

然后输出它并看看你有什么,上面的PHP代码可以帮助你形成你的查询。