如何更新MySQL的两列查找表,其中每个字段都是主键


How to update MySQL two column lookup table where each field is Primary Key

我有一个包含两个字段的查找表,每个字段都是一个PRIMARY KEY。当我尝试用PHP更新表时,它似乎可以工作,但不会更新。phpMyAdmin中的相同查询(没有准备好的部分)工作正常。

我的PHP是:

$sql = "UPDATE model_laser SET 
            model_id = :model_id,
            laser_id = :laser_id
            WHERE model_id = :model_id AND laser_id = :laser_id";
$s = $db->prepare($sql);
$s->bindValue(':model_id', $model_id);
$s->bindValue(':laser_id', $laser_id);
$s->execute();

phpMyAdmin,使用数字1&27,给出了php代码(这项工作)如下:

$sql = "UPDATE `model_laser` SET `model_id`= 1,`laser_id`= 27 WHERE model_id = 1 AND laser_id = 17";

谢谢你对我失踪的东西的帮助。

这似乎是您准备好的参数。你需要区分你正在更新的内容和你的数据库中已经存在的内容

我认为它应该看起来像这样:

$sql = "UPDATE model_laser SET 
        model_id = :new_model_id,
        laser_id = :new_laser_id
        WHERE model_id = :model_id AND laser_id = :laser_id";
$s = $db->prepare($sql);
$s->bindValue(':new_model_id', $new_model_id);
$s->bindValue(':new_laser_id', $new_laser_id);
$s->bindValue(':model_id', $model_id);
$s->bindValue(':laser_id', $laser_id);
$s->execute();

您的查询有两个不同的数字:laser_id。一个27岁,一个17岁。这可能是一个打字错误,或者是一个完全不同的问题。

$sql = "UPDATE `model_laser` SET `model_id`= 1,`laser_id`= 27 WHERE model_id = 1 AND laser_id = 17";