Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP过滤SQL查询_Php_Sql_Select - Fatal编程技术网

使用PHP过滤SQL查询

使用PHP过滤SQL查询,php,sql,select,Php,Sql,Select,我已经搜索了一段时间,想在SQL中选择某些列(字段) 我想做的是。。。假设我有一个包含200列数据的表。我想选择整行,但只选择最后197列数据。省去前三列的日期和ID 键入197个字段名将非常耗时,我希望从中获取数据。必须有更简单的方法 有什么帮助或建议可以为我指明正确的方向吗?如果您使用的是MySQL,那么您可以查询模式以通过索引获取列名,这样您就可以使用迭代PHP例程来构建查询,但在运行真正需要的查询之前,需要197条select语句。杂乱无章,效率低下 执行选择*然后忽略前三列似乎更简单。

我已经搜索了一段时间,想在SQL中选择某些列(字段)

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

键入197个字段名将非常耗时,我希望从中获取数据。必须有更简单的方法


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

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

执行
选择*
然后忽略前三列似乎更简单。如果使用
mysql\u fetch\u assoc()
可以轻松获得所需的列。看看:


如果您正在使用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";
?>

如果我正在执行此任务,我不会排除前3列。如果这3列包含冗长的text/blob,那么您可以避免,否则最好获取这200列


使用此函数mysql_list_fields()获取对应于表的字段,并自定义select查询以包含必填字段

您使用的是哪个数据库?如果是MySQL,我会使用
descripe
命令。是的,我正在使用MySQL。我忘了加那个小道消息了。我对PHP还是比较陌生的,并且试图理解该语言中一些更复杂的部分。我想,如果它们包含一个“SELECT*,除了xyz以外的任何地方”,那么它是有意义的。。。除了会让事情变得容易很多。这看起来就像我想尝试的。但是我想知道如果“WHERE xyz”指向我过滤掉的列,会发生什么?查询会因错误而失败,还是会正常工作?基本上,我正在尝试获取所有字段并过滤掉前3个ID字段,以便在显示(循环)结果时它们不是数组的一部分。这应该可以正常工作,但如果它们只是ID字段,它们不太可能在计算上很重,你可能想简单地忽略这些循环中的这些字段:)这是另一种方式。我也搜索过过滤循环的方法,但没有看到太多。似乎大多数网站都倾向于重复别人的建议。过了一段时间,它变得非常重复,没有信息。关于在循环中过滤ID字段的最佳方法有什么建议吗?这确实取决于你的循环在做什么,但是你可以做一些事情,比如$r=mysql\u查询(“从
表中选择*”)或死亡(mysql\u错误());而($f=mysql\u获取\u assoc($r)){foreach($f as$key=>$value){if($key==”fieldtoignore1或$key==“fieldtoignore2”或$key==“fieldtoignore3”)继续;回显“{$key}:{$value}”。PHP_EOL;}}好的,我很感激。我想我会尝试这个循环,看看是否可以根据需要对它进行微调。几天来,我一直在尝试将我的头绕在“$f as$key=>value”上,这给了我一个新的转折点。要学的东西太多了,地球上剩下的时间太少了。