从两个不同的表更新具有相同ID的多个数据

时间:2015-01-16 03:05:02

标签: php mysql

我的桌子就像这样

maklumatakaun    |   detailakaun
----------------------------------
id(A.I)          |     idDetail(A.I)
NoAkaun          |     KodLokasi
KodBahagian      |     NoTelefon
KodKategori      |     KodJenisAkaun
KodKategori      |     id
Tarif            |     

我正试图在detailakaun中同时更新两个表中的数据(maklumatakaun,detailakaun)有一个列'KodLokasi''KodJenisAkaun'和'NoTelefon',可能在一个id下有多个数据条目。这是我到目前为止所得到的

提取($ _POST);

if($ _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.如何正确更新?

1 个答案:

答案 0 :(得分:0)

如何正确更新?

使用 mysqli PDO 而不是弃用的mysql界面。

不要在帖子中覆盖变量的值,并且无意义地调用一个在被调用的地方无效的函数。

WHERE语句中使用UPDATE子句来标识您需要更新的行。或者,如果两个表通过某些列相关联,请使用连接操作来标识行。

对于所有在这个世界上美好而美好的事物的爱...停止编写易受SQL注入攻击的代码。停下来。将预备语句绑定占位符一起使用。如果您坚持使用不支持预准备语句的接口,那么请正确转义SQL文本中包含的不安全值。

如何正确更新它。