0

この配列を使用して mysql 挿入クエリを生成する必要があります。列名は field_name で、値は field_values です。implode を使用してみました。ここでは、ネストされた配列であり、多くの問題を抱えています。

 Array
    (
        [0] => Array
            (
                [field_name] => Date
                [field_value] => 01/02/2013
            )

        [1] => Array
            (
                [field_name] => Time
                [field_value] => 03:20 PM
            )

        [2] => Array
            (
                [field_name] => submitted_lat
                [field_value] => 13.06114
            )

        [3] => Array
            (
                [field_name] => submitted_long
                [field_value] => 80.2371547
            )

        [4] => Array
            (
                [field_name] => submitted_on
                [field_value] => 2013-02-01 15:20:10
            )

        [5] => Array
            (
                [field_name] => submitted_by
                [field_value] => superadmin@gmail.com
            )

        [6] => Array
            (
                [field_name] => pdf
                [field_value] =>
            )

    )
4

4 に答える 4

1

これを試して

$sql = "INSERT INTO `table_name` SET ";
$sql_fields='';

foreach($array_name as $k=>$v){
    $sql_fields .= "`".$v['field_name']."`='".$v['field_value']."', ";
}

$sql_fields = substr($sql_fields,0,-2);
$sql .= $sql_fields;
echo $sql;
于 2013-02-01T10:28:22.297 に答える
0

非常に単純なアプローチは次のとおりです。

$query = 'insert into table ';
foreach($inputs as $input) {
  $query .= ' '.$input['field_name'].' = '.$input['field_value']; 
}
echo $query;
于 2013-02-01T10:37:15.370 に答える
-1
$fields=array();
$values=array();
for($i=0;$i<count($array);$i++)
{
   $fields[]=$array[$i]['field_name'];
   $values[]=$array[$i]['field_value'];
}

if(count($array) > 0)
{
   $query="Insert into tablename (".implode(",", $fields).") values (".implode(",", $values).")";
   mysql_query($query);
}
于 2013-02-01T10:23:16.483 に答える
-1

SQL インジェクションを回避するために、値が正しく、保護されていることを確認する必要があります。独自の SQL クエリを動的に構築し、データベースに直接挿入することは安全ではありません。

とにかく、array_map()を使用して次のようなことを行うことができます:

$arr = array(array("name" => "column1", "value" => "value1"),
             array("name" => "column2", "value" => "value2"),
             array("name" => "column3", "value" => "value3"));

$columns = array_map(function($item) { return $item['name'];}, $arr);
$values = array_map(function($item) { return "'". $item['value'] . "'";}, $arr);


$columnsList = implode(',', $columns);
$valuesList = implode(',', $values);

$sql = "INSERT INTO mytable($columnsList) VALUES ($valuesList)";

編集: 冒頭で述べたように、これは安全ではなく、MySQLiまたはPDOを使用する方がよいでしょう。ただし、挿入先の列のタイプも知っておく必要があります。

于 2013-02-01T10:26:20.267 に答える