我的表是这样的
maklumatakaun | detailakaun
----------------------------------
id(A.I) | idDetail(A.I)
NoAkaun | KodLokasi
KodBahagian | NoTelefon
KodKategori | KodJenisAkaun
KodKategori | id
Tarif |
我正在尝试同时更新两个表中的数据(maklumatakaun,detailakaun),在详细信息中,有"KodLokasi"KodJenisAkaun"和"NoTelefon"列,在一个ID下可以有多个数据条目。这是我到目前为止得到的
摘录(_POST美元);
如果 ($_POST) {
$NoAkaun = isset($_POST['NoAkaun']) ? $_POST['NoAkaun'] : '';
$KodBahagian = isset($_POST['KodBahagian']) ? $_POST['KodBahagian'] : '';
$Tarif = isset($_POST['Tarif']) ? $_POST['Tarif'] : '';
$KodDaerah = isset($_POST['KodDaerah']) ? $_POST['KodDaerah'] : '';
$KodKategori = isset($_POST['KodKategori']) ? $_POST['KodKategori'] : '';
$NoTelefon = isset($_POST['NoTelefon']) ? $_POST['NoTelefon'] : '';
$KodLokasi = isset($_POST['KodLokasi']) ? $_POST['KodLokasi'] : '';
$KodJenisAkaun = isset($_POST['KodJenisAkaun']) ? $_POST['KodJenisAkaun'] : '';
$akaun_id = isset($_POST['akaun_id']) ? $_POST['akaun_id'] : '';
$sql = mysql_query("UPDATE maklumatakaun
SET NoAkaun = '$NoAkaun' ,
KodBahagian = '$KodBahagian' ,
KodDaerah = '$KodDaerah' ,
KodKategori = '$KodKategori' ,
Tarif = '$Tarif' ,
WHERE id = '$id'");
$akaun_id = mysql_insert_id();
foreach ($NoTelefon AS $i => $telefon){
$sql= mysql_query ("UPDATE detailakaun
SET KodJenisAkaun = '$KodJenisAkaun[$i]' ,
KodLokasi = '$KodLokasi[$i]' ,
NoTelefon = '$telefon'
");
此代码将更新两个表中的所有列,但假设一个帐户已注册了 3 个"KodLokasi"、"KodJenisAkaun"和"NoTelefon",然后在仅使用 3 列中的一列进行更新时,它将重复到 3 列。如何正确更新?
如何正确更新?
使用 mysqli 或 PDO 而不是已弃用的 mysql 接口。
不要通过对调用无效的函数进行无意义的调用来覆盖帖子中变量的值。
在 UPDATE
语句中使用 WHERE
子句来标识需要更新的行。或者,如果两个表由一组列关联,请使用联接操作来标识行。
为了爱,这个世界上所有美好和美好的事物......停止编写易受 SQL 注入攻击的代码。停下吧。将预准备语句与绑定占位符一起使用。如果您坚持使用不支持预准备语句的接口,请正确转义 SQL 文本中包含的不安全值。
这就是正确更新它的方法。