【问题标题】:php update record based on fetchphp基于fetch更新记录
【发布时间】:2015-06-25 06:08:24
【问题描述】:

[更新:找到解决方案。请参阅我自己的答案,如下] 我正在尝试学习 php,但我不知道如何做一些看似非常基本的事情,即根据获取标准更新记录。这是我成功获取记录的代码部分:

mysql_select_db('top_choice_system');

$query = "SELECT item_name FROM main ORDER BY cw DESC LIMIT 1";

$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)){
    echo "-- item name --" . $row['item_name'];

如何更新具体获取的项目?

ftr 下面是我成功用来更新记录的代码。但是,在下面的代码中,我自己在 WHERE 部分指定了记录:

$sql = 'UPDATE main
    SET column5=28
    WHERE ITEM=15';

我的意思是我不知道如何使 WHERE 匹配获取的记录。 (或者,更好的是,如何使用最简单、最短的方法获取和更新。)提前感谢您的帮助。

重新表述我的问题:我从在线教程中学习了几件事,但由于某种原因,我找不到有关更新记录的最基本信息,但不是基于记录的 id:例如,您想更新特定的符合特定条件的记录。 (如上例所示,如果特定列从上到下排序,则希望更新位于特定列顶部的任何记录。)

【问题讨论】:

  • 在数据库中,您通常有一个主键来标识每一行。这是在 where 部分传递给更新语句的一件事。
  • 谢谢安德烈。不幸的是,虽然我知道如何根据主键更新记录,但我不知道如何根据特定标准更新记录。具体来说,我不知道如何“在订购特定列时更新位于顶部的任何记录”
  • 对“顶部记录”的操作是随机的,在大多数情况下它会起作用,但是当“顶部”插入另一条记录时,您将更新错误的数据行。如果不使用记录的主键,就没有可靠的方法来更新记录。

标签: php


【解决方案1】:
update main set column5 = 
(SELECT item_name FROM main ORDER BY CW DESC)

您可以使用此更新之类的查询并一起选择您的问题未清除您想要哪些数据以及要更新哪些数据,因此您可以搜索更新选择查询并根据您的要求进行查询....

【讨论】:

  • 非常感谢 Sagar,但即使我根据您的好意做了几次尝试,我仍然失败了。我想,我缺少一个元素。假设我想将相关项目的 column5 中的值更新为 25。我的问题是我在哪里写“25”? (即,您建议我将在代码中的哪个位置写入我想要更新记录的值?) - 更具体地说,我想将 column5 中的值更新为 25,如果列从上到下排序。再次感谢。
  • 唉,我不知道“静态”是什么意思。无论如何,它是关于更新设置为 INT 甚至 TINYINT 的字段。该字段包含一个数字(一个整数),它在第 5 列中。情况就是这样:我希望 php 代码仅更新 column5 中的整数,以便在按 column2 对表进行排序(desc 限制 1)时出现在顶部的记录。我无法弄清楚代码。您的建议似乎步入正轨,但部分问题是在语法中我将在第 5 列的该字段中写入需要进入该字段的新整数...
【解决方案2】:

尤里卡:

$sql = 'UPDATE main
    SET testfield="YES" ORDER BY columnX DESC LIMIT 1';

注意:ORDER BY 条件不适用于 WHERE 行。当我将它添加到 SET 行时它起作用了。 (在http://www.phpknowhow.com/mysql/update-statement/找到代码)

【讨论】:

    猜你喜欢
    • 2020-03-05
    • 2019-02-17
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2015-02-15
    • 2012-05-10
    • 2018-08-12
    • 1970-01-01
    相关资源
    最近更新 更多