php—是否可以找到主键列名,并在同一查询的where子句中使用它?

xt0899hw  于 2021-06-19  发布在  Mysql
关注(0)|答案(0)|浏览(239)

由于我喜欢在数据库中进行小型查找时编写最小数量的代码,主要用于测试/检查目的,因此我为它编写了一个小型“ Package 器”。
而不是以下内容:

$dbh->prepare("UPDATE table SET multiple = ?, fields = ? WHERE id = ? LIMIT 1");
 $dbh->execute($val1,$val2,$id);

我可以把它简化为:

$db->u('table SET multiple, fields',[$val1, $val2, $id]);

当没有 WHERE 在sql字符串中,它自动假定应该使用表primary kay列作为标识符。
但是 id 不一定总是主键的名称。为了让它正常工作,我在 Package 器中添加了以下代码:

$PRI = $dbh->query("SHOW KEYS FROM $T WHERE Key_name = 'PRIMARY'")->fetchColumn(4);
``` `$T` 是 Package 器的一部分,包含表名。 `$PRI` 是否在主查询中使用。。。
这将返回该表中主键的名称,以便我可以在查询中使用它。
当然,这不能在所有情况下都起作用,这取决于表的设置,但在大多数情况下,它确实起作用。
也可以这样做:

$db->u('table SET multiple, fields WHERE column = ?',[$val1, $val2, $id]);

什么时候 `WHERE column = ?` 已添加( `WHERE` (特别是)没有必要进行额外的查询。。。这一切都是为了减少书写量,而不需要记住每一个主列;)
那么,有没有办法把 `SHOW KEYS` 主查询中的查询-如下所示:

SELECT fields FROM table WHERE (SHOW KEYS ...) AND other = ? AND colums = ?

这样就不用同时运行两个查询了?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题