我想通过foreach循环更新数据库中表单字段的数据。我在test_table ID和Input中有两列。我通过while循环获取数据并且还打印了值。现在我想更新获取的值。请为此提供一些指导。
这是我的代码,
$sql = "select * from test_table";
if($result = mysqli_query($conn, $sql))
{
while($row = mysqli_fetch_array($result))
{
$inputResult[]=$row;
}
} <form method="POST"> <input type="text" value=<?php
echo $inputResult[0]['Input']; ?> id="$inputResult[0]['ID']"> <input
type="submit" name="submit"> </form> <?php
if (isset($_POST['submit'])
{
$input = $inputResult[];
foreach($input as $inputs => $value)
{
$Sql = "update test_table set Input='$value' where = '$inputs'";
mysqli_query($conn, $sql);
}
} ?>
请告诉我代码中有哪些错误?提前谢谢。
答案 0 :(得分:0)
下一个解决方案非常适合您的问题。输入文本是表单中的第一个元素,因此,在PHP代码中,我们可以通过访问数组$ _POST中的第一项来获取输入的ID和VALUE(箭头指向更改) ◄■■■
):
<?php
$sql = "select * from test_table";
if($result = mysqli_query($conn, $sql)) {
while($row = mysqli_fetch_array($result)) {
$inputResult[]=$row;
}
}
?>
<form method="POST">
<input type="text" value="<?php echo $inputResult[0]['Input'];?>"
name="<?php echo $inputResult[0]['ID'];?>" /> ◄■■■ NAME, NOT ID.
<input type="submit" name="submit" />
</form>
<?php
if ( isset($_POST['submit']) ) {
$value = reset( $_POST ); // ◄■■■ FIRST VALUE IN $_POST (['input']).
$id = key( $_POST ); // ◄■■■ FIRST KEY IN $_POST (['ID']).
$Sql = "update test_table set Input='$value' where id='$id'"; // ◄■■■ $VALUE AND $ID.
mysqli_query($conn, $sql);
}
?>
我在输入文本中用id=
替换了属性name=
,因为PHP需要名称,而不是ID。
获取第一个值和第一个键后,我们可以将它们插入到sql字符串中。
修改:
修复了丢失的标签(哎呀!)。我想我发现了错误,它很少见,很难看到:注意下一行:
▼
$Sql = "update test_table set Input='$value' where id='$id'"; // ◄■■■ $VALUE AND $ID.
您是否在左侧看到变量:$Sql
(第一个字母是大写的)。现在让我们看看下一行:
▼
mysqli_query($conn, $sql);
同一个变量不是大写的,一旦你修复了它,一切正常:
▼
$sql = "update test_table set Input='$value' where id='$id'"; // ◄■■■ $VALUE AND $ID.
mysqli_query($conn, $sql);
▲