Php 在POST之后使用数组
我想用一个简单的表单编辑数据库条目。 每个条目的id和名称是固定的 问题: 提交表单后,$farray只包含$array[3]的编辑数据,而不包括其他记录的编辑数据。 $farray不包含表单中未包含的名称和id。我需要查询记录的id。 我可以使用什么作为解决方法 当前脚本 编辑和提交表单后的示例$farrayPhp 在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
好的,即使您的表字段不是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>