使用PHP过滤SQL查询


Filtering SQL Queries Using PHP

我已经搜索了一段时间来选择SQL中的某些列(字段)。

我想做的是。。。假设我有一个包含200列数据的表。我想选择一整行,但只选择最后197列的数据。省略前3列中包含日期和ID的内容。

键入我想要数据的197个字段名将非常耗时。必须有一些更简单的方法。

有什么帮助或建议可以为我指明正确的方向吗?

如果您正在使用MySQL,请尝试以下操作:

<?php
$query = "
SHOW COLUMNS FROM `Table` 
WHERE `Field` NOT LIKE 'rowtoignore1' 
AND `Field` NOT LIKE 'rowtoignore2' 
AND `Field` NOT LIKE 'rowtoignore3'
";
$r = mysql_query($query) or die(mysql_error());
$queryfields = "";
while($f = mysql_fetch_assoc($r)) { 
  $queryfields .= "`{$f['Field']}`,";
}
$queryfields = substr($queryfields,0,strlen($queryfields)-1);
$query = "SELECT {$queryfields} FROM `Table` WHERE xyz";
?>

如果您使用MySQL,您可以查询模式以通过索引获得列名,因此您可以使用迭代PHP例程来构建查询,但在运行您真正想要的语句之前,需要197条select语句。杂乱无章,效率低下。

做一个SELECT *然后忽略前三列似乎更简单。如果你使用mysql_fetch_assoc(),你可以很容易地得到你想要的列。看看:

  • http://php.net/manual/en/function.mysql-fetch-array.php

如果我在做这个任务,我不会排除前3列。如果这3列包含很长的text/bob,那么您可以避免,否则最好获取这200列。

使用此函数mysql_list_fields()获取与表相对应的字段,并自定义选择查询以包含所需字段