Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在POST之后使用数组_Php_Arrays_Forms_Foreach - Fatal编程技术网

Php 在POST之后使用数组

Php 在POST之后使用数组,php,arrays,forms,foreach,Php,Arrays,Forms,Foreach,我想用一个简单的表单编辑数据库条目。 每个条目的id和名称是固定的 问题: 提交表单后,$farray只包含$array[3]的编辑数据,而不包括其他记录的编辑数据。 $farray不包含表单中未包含的名称和id。我需要查询记录的id。 我可以使用什么作为解决方法 当前脚本 编辑和提交表单后的示例$farray 好的,即使您的表字段不是1、2和3,您也只需要稍微更改发布的数组。所以我给你举了个小例子: <form method="post"> <?php // Simulate

我想用一个简单的表单编辑数据库条目。 每个条目的id和名称是固定的

问题:

提交表单后,$farray只包含$array[3]的编辑数据,而不包括其他记录的编辑数据。 $farray不包含表单中未包含的名称和id。我需要查询记录的id。 我可以使用什么作为解决方法

当前脚本

编辑和提交表单后的示例$farray


好的,即使您的表字段不是1、2和3,您也只需要稍微更改发布的数组。所以我给你举了个小例子:

<form method="post">
<?php
// Simulate DB records
$array = [
  [
    'id'   => 0,
    'name' => 'name0',
    '1'    => 1,
    '2'    => 2,
    '3'    => 3
  ],
  [
    'id'   => 1,
    'name' => 'name1',
    '1'    => 1,
    '2'    => 2,
    '3'    => 3
  ],
  [
    'id'   => 2,
    'name' => 'name2',
    '1'    => 1,
    '2'    => 2,
    '3'    => 3
  ]
];
// Create the input fields:
foreach( $array as $key1 )
{
    echo $key1["name"] . "<br />";

    foreach($key1 as $key => $value)
    {
        if ($key != "id" AND $key != "name") 
        {
            echo $key. 
            ' <input type="text" name="farray[' . $key1['id'] . ']['.$key.']" value="'.$value.'"><br /><br />';
        }    
    }
}
?>
<button type="submit">Submit</button>
</form>

<pre>
<?php 
if( isset( $_POST['farray'] ) )
{
  print_r( $_POST );

  foreach( $_POST['farray'] as $id => $values ) 
  {
    foreach( $values as $k => $v )
    {
      echo('UPDATE database SET ' . $k . ' = "' . $v . '"' . ' WHERE id = ' . $id ) . '<br />';
    }
  }
}
?>
</pre>

我对此进行了测试,我认为它可以像您预期的那样工作。

您的数据库表中是否有名为1、2和3的字段?@BrianGottier没有,这些都是示例。我给您留下了一个答案。您需要解决一个主要的安全问题SQL注入漏洞,但我的回答的重点是向您展示如何正确发布数据数组。我的回答应该让你很清楚如何修复你的实际代码。@BrianGottier我知道安全性。非常感谢你的回答!
Array
(
    [0] => Array
        (
            [id] => 0
            [name] => name0
            [1] => 1
            [2] => 2
            [3] => 3
        )

    [1] => Array
        (
            [id] => 1
            [name] => name1
            [1] => 1
            [2] => 2
            [3] => 3
        )

    [2] => Array
        (
            [id] => 2
            [name] => name2
            [1] => 1
            [2] => 2
            [3] => 3
        )

    [3] => Array
        (
            [id] => 3
            [name] => name3
            [1] => 1
            [2] => 2
            [3] => 3
        )
)
Array
(
    [1] => 10
    [2] => 20
    [3] => 30
)
<form method="post">
<?php
// Simulate DB records
$array = [
  [
    'id'   => 0,
    'name' => 'name0',
    '1'    => 1,
    '2'    => 2,
    '3'    => 3
  ],
  [
    'id'   => 1,
    'name' => 'name1',
    '1'    => 1,
    '2'    => 2,
    '3'    => 3
  ],
  [
    'id'   => 2,
    'name' => 'name2',
    '1'    => 1,
    '2'    => 2,
    '3'    => 3
  ]
];
// Create the input fields:
foreach( $array as $key1 )
{
    echo $key1["name"] . "<br />";

    foreach($key1 as $key => $value)
    {
        if ($key != "id" AND $key != "name") 
        {
            echo $key. 
            ' <input type="text" name="farray[' . $key1['id'] . ']['.$key.']" value="'.$value.'"><br /><br />';
        }    
    }
}
?>
<button type="submit">Submit</button>
</form>

<pre>
<?php 
if( isset( $_POST['farray'] ) )
{
  print_r( $_POST );

  foreach( $_POST['farray'] as $id => $values ) 
  {
    foreach( $values as $k => $v )
    {
      echo('UPDATE database SET ' . $k . ' = "' . $v . '"' . ' WHERE id = ' . $id ) . '<br />';
    }
  }
}
?>
</pre>