1

由于我喜欢在数据库中进行小型查找时编写最少的代码,主要用于测试/检查目的,因此我为它编写了一个小型“包装器”。

而不是以下内容:

 $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]);

WHEREsql 字符串中没有时,它会自动假定它应该使用表主 kay 列作为标识符。
id并不总是需要主键的名称。因此,为了使其正常工作,我将此代码添加到包装器中:

$PRI = $dbh->query("SHOW KEYS FROM $T WHERE Key_name = 'PRIMARY'")->fetchColumn(4);  

$T是包装器的一部分,包含表名。
$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 = ?

所以不必一次运行两个查询?

4

0 回答 0