【问题标题】:Update table with increment value使用增量值更新表
【发布时间】:2014-01-19 03:16:02
【问题描述】:

我正在尝试使用 while 循环更新表中的值,但我希望该值类似于使用 auto_inc 键。

我的桌子:ID / CAR_ID / IMG_KEY / IMAGE

我想取 12 行相同的 CAR_ID 并给出从 1 到 12 的 IMG_KEY 值。

我尝试了下面的循环,但结果是给 IMG_KEY 值 1

$getImages = mysql_query("SELECT * FROM more_images WHERE car_id = '$car_id'") or die(mysql_error());  

$img_key = 0;
    for ($img_key = 1; $img_key <= mysql_num_rows($getImages); $img_key ++) {
        while ($selectedImages = mysql_fetch_assoc($getImages)) {
            $update = mysql_query("UPDATE `more_images` SET `img_key` = '$img_key' WHERE `car_id` = '$car_id'") or die(mysql_error());
        }
    }

目标是为以下 12 行 img_key 提供从 1 到 12 的值以及所有其他值。

【问题讨论】:

  • 你是这个意思吗? stackoverflow.com/questions/973380/…
  • 由于$car_id 没有改变,你总是在更新同一行。
  • 您似乎在循环选定的行以根据每行中的数据更新它们。请发布您用来选择这些行的 SQL,因为它看起来可以通过一个 SQL 调用完成,并且没有循环结果。
  • 哦,在您的 while 循环中,您正在读取所有返回的记录,这对推进您的 for 循环没有任何作用。此外,mysql_* 功能已弃用,您最好切换到mysqli_*PDO。 (此处解释:stackoverflow.com/questions/12859942/…
  • 我更新了问题以获得更好的解释。我知道mysql decleration。我的 PHP 是旧的。当我更新它时,我将替换 mysql 函数。不是现在

标签: php mysql for-loop while-loop


【解决方案1】:

好的,我仍然不能 100% 确定你想要什么,但我猜你正在寻找这样的东西:

$imgKey = 0;
while ($selectedImages = mysql_fetch_assoc($getImages))
{
   $imgKey++;
   $update = mysql_query("UPDATE `more_images` SET `img_key` = '{$imgKey}' WHERE `car_id` = '{$car_id}'") or die(mysql_error());
}

在您的问题中,您的 for 循环除了循环之外没有做任何事情,在您的情况下它会迭代十二次。

因为mysql_fetch_assoc($getImages) 是一个循环遍历一组结果中所有行的函数。因此,对于for 循环的每次迭代,它都会更新所有记录以具有相同的$img_key

另外,确实不要使用mysql_* 函数,它们已被弃用。阅读此线程: Why shouldn't I use mysql_* functions in PHP?

【讨论】:

  • 这仍然会在所有 12 行中将 img_key 返回到 1。我在发布问题之前尝试过
  • 好吧,我现在很茫然。此时我会使用var_dump() 来确定我的代码哪里出错了。我首先在while 循环中使用var_dump($img_key),以确定该值是否是您期望的值并继续调试,直到您发现问题。有时,像这样的小问题是由您期望正确的事情引起的。
  • 与 var_dump($img_key) 无关
猜你喜欢
  • 2017-05-12
  • 1970-01-01
  • 2021-05-10
  • 2017-03-01
  • 1970-01-01
  • 2016-11-06
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多