Php 从两个不同的表更新多个具有相同id的数据
我的桌子是这样的Php 从两个不同的表更新多个具有相同id的数据,php,mysql,Php,Mysql,我的桌子是这样的 maklumatakaun | detailakaun ---------------------------------- id(A.I) | idDetail(A.I) NoAkaun | KodLokasi KodBahagian | NoTelefon KodKategori | KodJenisAkaun KodKategori | id Tarif
maklumatakaun | detailakaun
----------------------------------
id(A.I) | idDetail(A.I)
NoAkaun | KodLokasi
KodBahagian | NoTelefon
KodKategori | KodJenisAkaun
KodKategori | id
Tarif |
我试图同时更新两个表中的数据(maklumatakaun,detailakaun)在detailakaun中有“KodLokasi”、“KodJenisAkaun”和“NoTelefon”列,在一个id下可能有多个数据项。以下是我目前得到的结果
摘录(元);
如果(美元邮政){
此代码将更新两个表中的所有列,但假设一个帐户已在3个“KodLokasi”、“KodJenisAkaun”和“NoTelefon”中注册,那么当仅使用3个列中的一个进行更新时,它将重复到3。如何正确更新此代码?如何正确更新 使用mysqli或PDO而不是不推荐的mysql接口 不要用对函数的无意义调用覆盖post中的变量值,该函数在被调用的地方无效 在
UPDATE
语句中使用WHERE
子句来标识需要更新的行。或者,如果两个表由一组列关联,则使用联接操作来标识行
为了爱这个世界上所有美好的事物……停止编写易受SQL注入攻击的代码。停下来。使用预处理语句和绑定占位符。如果您坚持使用不支持预处理语句的接口,则正确地避开包含的不安全值在SQL文本中
这就是正确更新它的方法。第二条update语句似乎需要WHERE子句。确定要更新的行。此代码对SQL注入开放。现在已经是2015年了,为什么我们要使用被弃用了多少年的mysql接口进行示例?mysqli和PDO接口都支持或者准备好的语句。我不知道为什么在
更新
查询之后会调用mysql\u insert\u id
函数。为什么会有塑料?该函数的返回仅在插入成功插入一行(该行的列由AUTO\u INCREMENT指定)之后立即有效。
$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'
");