我只是想知道是否有任何方法可以使用WHERE
子句中的主键选择一行,而不必知道键列的名称。
我建议的 PHP 函数如下:
function getData($table,$key,$asarray=false) {
$sql = mysql_query("select * from `".$table."` where primary='".$key."'");
if( !$asarray) return mysql_fetch_assoc($sql);
$ret = [];
while($row = mysql_fetch_assoc($sql)) $ret[] = $row;
return $ret;
}
几点注意事项:
$table
仅来自代码内部的文字字符串,绝不来自外部来源。- 出于此问题的目的,假设
$key
已正确转义。 - 我不在乎
mysql
PHP 5.5 中已弃用,因为我使用的是 PHP 5.4 - 出于同样的原因,这
$ret = []
是定义数组的一种完全有效的方法——我这样说是因为在我的最后一个问题中,人们告诉我,由于这种语法,我的代码无法正常工作。
现在,我当前的实际工作代码有一个关联数组,将表名映射到它们对应的主键字段名。我只是想知道是否有一种自动化的方法可以做到这一点,最好是不涉及查询的方法INFORMATION_SCHEMA
,SHOW CREATE TABLE
或者SHOW INDEXES
.