gpt4 book ai didi

php - 如何更改 While 循环内的单行数组变量并使用新结果更新数据库表

转载 作者:行者123 更新时间:2023-11-29 18:27:17 32 4
gpt4 key购买 nike

END 处 HTML TABLE 结果的图片

下面的完整代码 - 按顺序。注意 - 我可以轻松更改所有行并在 HTML 表中显示。至少对我来说,诀窍是仅将一行更改为新值。

  <?php
session_start();

$db = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

$stmt = $db->prepare("SELECT id_ai, name, age, agender, $flex,hsp_plan,hcs_plan FROM quotes ");
$stmt->execute();
$stmt->bind_result($id_ai, $name, $age, $agender, $flex,$hsp_plan,$hcs_plan);
$stmt->store_result();

echo
"<div class='table-responsive'>
<table id='myTable' class='table table-striped table-bordered'>
<p><font color='#4169e1'></font></p>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
<th>Flex</th>
<th>HSP</th>
<th>HCS</th>
</tr>
</thead>
<tbody>";

我在回显表标题后开始 while 循环,因此它只打印一次。然后我开始循环

  while ($stmt->fetch()){

$_SESSION['id_ai'] = $id_ai;
$_SESSION['name']= $name;
$_SESSION['age']= $age;
$_SESSION['agender']= $agender;
$_SESSION['flex']= $flex;
$_SESSION['hsp_plan']= $hsp_plan;
$_SESSION['hcs_plan']= $hcs_plan;

$id_ai = $_SESSION['id_ai'];
$name = $_SESSION['name'];
$age = $_SESSION['age'];
$agender = $_SESSION['agender'];
$flex = $_SESSION['flex'];
$hsp_plan = $_SESSION['hsp_plan'];
$hcs_plan = $_SESSION['hcs_plan'];

$hsp_plan = mysqli_real_escape_string($db, $_SESSION['hsp_plan']);
$hcs_plan = mysqli_real_escape_string($db, $_SESSION['hcs_plan']);
$age = mysqli_real_escape_string($db, $_SESSION['age']);
$agender = mysqli_real_escape_string($db, $_SESSION['agender']);

我使用变量来查询数据库表。作品完美。结果我得到了重复的定价 97.09 97.09 - FOREACH 纠正了这个问题。

  $hsp_query = mysqli_query($db,"Select sum($agender * 1 ) FROM $hsp_plan WHERE age = $age ");         
$hsp = mysqli_fetch_array($hsp_query, MYSQLI_BOTH);

foreach($hsp as $key => $value)
{
$hsp_a = explode(' ', trim($value));
$hsp_b[$hsp_a[1]] = $hsp_a[0];
$hsp_price = implode(' ', $hsp_b);
}

我用新结果插入/更新表格。

  $sql = "INSERT INTO quotes (id_ai, id, name, age, agender, flex,hsp,hcs,bal, hsp_plan, hcs_plan) VALUES ('$id_ai', '$id_ai', '$name', '$age','$agender','$flex', '$hsp_price', '$hcs_price', '$hsp_plan','$hcs_plan')
ON DUPLICATE KEY UPDATE `id_ai`='$id_ai', `id`='$id_ai', `name`='$name', `age`='$age', `agender`='$agender', `flex`='$flex', `hsp`='$hsp_price', `hcs`='$hcs_price', `hsp_plan`='$hsp_plan', `hcs_plan`='$hcs_plan' ";
if (mysqli_query($db, $sql)) {
echo "";
} else {
echo "Error: " . $sql . " " . mysqli_error($db);
}

这是我显示结果的地方,并且工作完美,直到我尝试更新。请参阅下面的更多内容。

  echo 
"<tr>
<td>$id_ai</td>
<td>$name</td>
<td>$age</td>
<td>$agender</td>
<td><font size=2 color='#DAA520'><b><u>$flex</u></b></font></td>
<td align=center><font size=2 color='green'>$hsp_price<br /><a href=#>$hsp_plan</a></font>

<form action='hsp.php' method='POST' >
<select onchange='this.form.submit()'' name='hs' class='form-control'>
<option name='hs' value='hsp0'>chg</option>
<option name='hs' value='hsp0'>x</option>
<option name='hs' value='hsp5012'>5012</option>
<option name='hs' value='hsp5013'>5013</option>
<option name='hs' value='hsp5021'>5021</option>
<option name='hs' value='hsp5022'>5022</option>
<option name='hs' value='hsp5023'>5023</option>
<option name='hs' value='hsp5031'>5031</option>
<option name='hs' value='hsp5032'>5032</option>
<option name='hs' value='hsp5033'>5033</option>
</select>
</form>
</td>

</tr>";
}

echo "</tbody></table></div>";


/* close statement*/
$stmt->close();

}
?>

这是 HSP.PHP 的瓶颈 - 注意上面的 Form action='hsp.php ... 下面是代码。仅更新循环中的最后一条记录。

hsp.php

  <?php
session_start();

$db = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

$_SESSION['hs'] = $_POST['hs'];
$_SESSION['id_ai'];

$hs = $_SESSION['hs'];
$id_ai = $_SESSION['id_ai'];

$hs = mysqli_real_escape_string($db, $_SESSION['hs']);
$id_ai = mysqli_real_escape_string($db, $_SESSION['id_ai']);

$sql = "UPDATE quotes SET hsp_plan='$hs' where id_ai = '$id_ai' ";
if ($db->query($sql) === TRUE) {
header("Location: index.php");
}
else {
echo "Error updating record: " . $db->error;
}
?>

Result Page

最佳答案

编辑:如果我正确理解表的每一行都是具有相同名称的表单,则每个表单都有一个具有相同输入名称的输入,并且您想要进行更改并仅更新与用户更改的行相对应的数据库行,你可以尝试使用 <input type='hidden' name='row_id' value='$row_id'>

原文:您遇到了一些问题。我注意到的主要问题是您的表单提交到 hsp.php,但 hsp.php 似乎没有设置为向客户端提供 View 。

我是否理解您希望客户在完成选择后看到相同的表格?您的更新代码可以位于页面显示代码之前,但包含在 if 中声明,例如 if(isset($_POST['hs'])或其他什么。

如果您让我了解总体目标是什么,那么我可能可以引导您找到更好的方法来完成它。你的方式有点杂乱,让人很难跟上。

关于php - 如何更改 While 循环内的单行数组变量并使用新结果更新数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46065176/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com