gpt4 book ai didi

php - 显示 mysql 表中的数据

转载 作者:行者123 更新时间:2023-11-30 01:38:12 24 4
gpt4 key购买 nike

我使用 while 循环创建了这个表单,这样我就不必创建 28 个文本字段...但是当我将数据提交到我的 mysql 数据库时,它运行良好,但如何将数据显示回我的表单进行编辑并更新..当我在文本字段中输入一个值(EX-submitted data from mysql在emp_name字段中)然后它在文本字段中重复4次..我知道这是因为循环而发生的,但有什么办法可以做到这一点我可以在每个文本字段中显示多个数据,以便在用户正常提交数据后进行更新....

我的form.php

<form action="userdata.php" name="frmAdd" method="post">

<table width="80%" border="0" cellpadding="3" cellspacing="3" class="forms">
<tr>
<td width="5"> <div align="center">NO</div></td>
<td width="91"> <div align="center">Employer's NAME</div></td>
<td width="160"> <div align="center">COUNTRY</div></td>
<td width="198"> <div align="center">POSITION</div></td>
<td width="70"> <div align="center">FROM</div></td>
<td width="70"> <div align="center">TO</div></td>
<td width="70"> <div align="center">SALARY</div></td>
<td width="70"> <div align="center">REASONS FOR LEAVING</div></td>
</tr>

<?php for($i=1;$i<=4;$i++) { ?>

<tr>
<th width="5"> <div align="center"><? echo $i . "."; ?></div></th>
<td><input type="text" name="emp_name<?=$i;?>" size="25" value="submitted data from mysql"></td>
<td><input type="text" name="emp_country<?=$i;?>" size="10"></td>
<td><input type="text" name="emp_pos<?=$i;?>" size="10"></td>
<td><input type="text" name="emp_frm<?=$i;?>" size="5"></td>
<td><input type="text" name="emp_to<?=$i;?>" size="5"></td>
<td><input type="text" name="emp_sal<?=$i;?>" size="5"></td>
<td><input type="text" name="emp_lev<?=$i;?>" size="25"></td>
</tr>
<?php } ?>
</table>
</br>
<input type="submit" name="doHis" value="Save Employment History">
<input type="hidden" name="hdlfrm" value="<?=$i;?>">
</form>

和我的 userdata.php

    if($_POST['doHis'] == 'Save Employment History')  
{
try{
$conn = new PDO("mysql:host=localhost;dbname=dbname", "user", "pass");
}
catch(PDOException $pe)
{
die('Connection error, because: ' .$pe->getMessage());
}

for($i=1;$i<=$_POST["hdlfrm"];$i++){

if($_POST["emp_name$i"] != ""){

$sql = "INSERT INTO emp_table (emp_name, emp_country, emp_pos, emp_frm, emp_to, emp_sal, emp_lev)
VALUES (:emp_name, :emp_country, :emp_pos, :emp_frm, :emp_to, :emp_sal, :emp_lev)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':emp_name', $_POST["emp_name$i"]);
$stmt->bindParam(':emp_country', $_POST["emp_country$i"]);
$stmt->bindParam(':emp_pos', $_POST["emp_pos$i"]);
$stmt->bindParam(':emp_frm', $_POST["emp_frm$i"]);
$stmt->bindParam(':emp_to', $_POST["emp_to$i"]);
$stmt->bindParam(':emp_sal', $_POST["emp_sal$i"]);
$stmt->bindParam(':emp_lev', $_POST["emp_lev$i"]);
$stmt->execute();

echo "Save Done. Click <a href='phpMySQLListRecord.php'>here</a> to view.";
}
}



}

这是快照

enter image description here

最佳答案

您遇到的问题是您的数据模型 - 您正在保存工作历史记录,但为谁保存?它需要在某处有一个 employee_id 来说明该数据属于谁,并将其连接到保存 employee_table 数据的表。接下来,您需要在 emp_table 上有一个唯一的 ID 来标识每一行,您可以使用它来代替 $i 索引。

表格

history_id INT autoincrement | employee_id INT | emp_name VARCHAR | your other fields....

选择

SELECT history_id, emp_name, ... FROM emp_history where employee_id = ?

然后,您可以循环结果并使用 history_id 来标识数据所属的行以对其进行更新。提交具有相同名称的多个字段将是一个可以迭代的数组,因此您不需要为每个字段使用唯一的字段名称。

顺便说一句,您可能需要使用 isset($_POST["key"]) 而不是 $_POST["key"] != ""检查字段是否已提交。

关于php - 显示 mysql 表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552423/

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