【问题标题】:Updating more than one data with the same id from two different tables从两个不同的表中更新多个具有相同 id 的数据
【发布时间】:2015-03-14 15:04:36
【问题描述】:

我的桌子是这样的

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

我正在尝试一次更新两个表中的数据(maklumatakaun,detailakaun),在 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. 我怎样才能正确更新这个?

【问题讨论】:

  • 似乎您需要在第二个更新语句上使用 WHERE 子句。确定您要更新的哪些行。此代码对 SQL 注入开放。已经是 2015 年了,为什么我们要使用已经弃用了多少年的 mysql 接口给出示例? mysqli 和 PDO 接口都提供对准备好的语句的支持。我不知道为什么在UPDATE 查询之后调用mysql_insert_id 函数。为什么那里有塑料?仅在成功插入具有由 AUTO_INCREMENT 分配的 col 的行的 INSERT 之后立即返回有效。

标签: php mysql


【解决方案1】:

如何正确更新?

使用 mysqliPDO 而不是已弃用的 mysql 接口。

不要用对调用位置无效的函数的无意义调用来覆盖帖子中变量的值。

在您的UPDATE 语句中使用WHERE 子句来标识您需要更新的哪些 行。或者,如果这两个表通过一组列相关,则使用连接操作来识别行。

为了这个世界上所有美好美好的事物的爱...停止编写易受 SQL 注入攻击的代码。停下来。将prepared statementsbind placeholders一起使用。如果您坚持使用不支持预准备语句的接口,则正确转义 SQL 文本中包含的不安全值。

这就是正确更新它的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多