【问题标题】:Delete specific row from MySQL database by row number按行号从 MySQL 数据库中删除特定行
【发布时间】:2016-09-10 16:52:41
【问题描述】:

我是使用 MySQL 查询的新手,所以请多多包涵。我在数据库连接(iPhone 应用程序)的客户端获得了一组对象,我正在尝试实现一个删除按钮,让用户可以选择删除数组中的某个对象。

我希望返回一个整数,它代表被删除对象的索引,现在我正在创建一个 PHP 脚本来获取该索引并使用它来删除我的 MySQL 表中的匹配行。

如何指定要删除的特定行号?例如,如果我的数组中的第四个对象被删除,我会得到一个返回给我的索引 3。有什么方法可以使用这个索引来指定我想要删除 MySQL 数据库中的第四行吗?

我得到了 DELETE FROM "MySQLTable" WHERE 的全部语法...但是在 WHERE 之后它有点令人困惑,因为在我看来你总是必须指定一个条件,而不是只传递一个行数你想删除。我错了吗? MySQL 表中的行甚至有索引吗?我想他们会的。关于如何通过传入一个值(最好是索引)来删除数据库中特定行的一些提示将不胜感激。

【问题讨论】:

  • WHERE row_identfier = number 应该可以工作。
  • 请向我们提供表的架构。
  • 数据库中的行确实有索引,称为主键值;并且您的表应该有一个主键,该主键是该行的唯一标识符。使用行的主键,而不是 PHP 数组中的位置
  • @JayBlanchard 我在哪里可以获得 row_identifier?如果我指定这样的条件,它需要一列,所以像这样指定行号的唯一方法是添加一个新列并将其命名为“row_identifier”。
  • row_identifier 只是一个例子。使用与它唯一匹配的行中的一条数据

标签: php mysql database sql-delete


【解决方案1】:

要小心,因为数组是零索引的(数组第一项将为 0),而数据库表通常不是(表的第一项将为 1),这意味着数组的第四项是 3,而第四项数据库表的数量将是 4。

但是,一旦您有了要删除的行 ID,则必须通过添加该数字来扩展查询,例如:

DELETE FROM "MySQLTable" WHERE rowIndex = 'numberToDelete'

您需要根据您的代码更改rowIndex 和numberToDelete。

一般数据库表中的行都会有索引,但索引必须在表中手动定义,因为它不会自动添加。

---附加信息---

您需要在数据库表中包含一个列(在示例中为rowIndex),其中包含您在数组中的索引,假设所有值都是唯一的,将其作为主键可能是有意义的。

然后您可以在 sql 查询中使用您的整数值来删除该行,例如:

$sql = "DELETE FROM MySQLTable WHERE rowIndex = '" . $numberToDelete . "'";

【讨论】:

  • 我明白这一点。这没什么大不了的,因为在客户端代码中,我可以将返回的索引增加 1 以获取行号('3' 的索引将变为行号'4')。我只是想知道如何让 rowIndex 包含一个代表我要删除的行的行号的数字。据我所知,我必须使用索引创建一个新列并将其分配给变量“rowIndex”,对吗?
  • 在答案中添加了其他信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2011-10-30
  • 1970-01-01
  • 2014-03-04
相关资源
最近更新 更多