【问题标题】:SQL SERVER select statement doesn't seem to be able to select more than one columnSQL SERVER select 语句似乎不能选择多于一列
【发布时间】:2014-07-30 06:16:33
【问题描述】:

我目前使用的是 SQL Server 2008。我感到非常沮丧,因为我的 select 语句似乎不能选择多个列。每次我从我的数据库表中选择时,它什么都不显示。

我的编码如下:

<?php
// build a query to select records from table authorisation to echo out all queries
$query1  = "SELECT * FROM authorisation  ";

// execute the query you created above and store the result in a php variable
$result1 = sqlsrv_query($con, $query1) or die(print_r( sqlsrv_errors(), true));

// build a query to select records from table authorisation to echo out all queries
while ($group= sqlsrv_fetch_array($result1)  {
    $permissiongroup = $group[0];
    $permissionpages = $group[1];

    echo $permissiongroup;
    echo $permissionpages;
}
?>

我改用了两个查询,它可以工作。我不知道为什么。

// build a query to select records from table authorisation to echo out all queries
$query1  = "SELECT permissiongroup FROM authorisation ORDER BY permissiongroup";

// execute the query you created above and store the result in a php variable
$result1 = sqlsrv_query($con, $query1) or die(print_r( sqlsrv_errors(), true));

// build a query to select records from table authorisation to echo out all queries
$query2  = "SELECT permissionpages FROM authorisation ORDER BY permissiongroup ";

// execute the query you created above and store the result in a php variable
$result2 = sqlsrv_query($con, $query2) or die(print_r( sqlsrv_errors(), true));

while (($group= sqlsrv_fetch_array($result1)) && ($page= sqlsrv_fetch_array($result2)) ) {
   $permissiongroup = $group['permissiongroup'];
   $pages = $page['permissionpages'];
   echo $permissiongroup;
   echo $pages;
}

【问题讨论】:

  • 不是很擅长 php 但可以试试 echo $group['columnname'];
  • 需要提供授权表字段名称$group['id_authorisation'],而不是$group[0]
  • prava:表格字段是什么意思? zxc:我以前试过,没用:(
  • @Jolene,你能把你在评论中谈论的单独的查询放在这里吗,你已经试过了。这将有助于我们更多地发现问题。
  • @Jolene,你能不能试着用列名而不是像SELECT permissiongroup,permissionpages FROM authorisation; 这样的SELECT * FROM 编写一个完整的查询。这可能会解决您的问题。

标签: php sql database sqlsrv


【解决方案1】:

试试这个

<?php
// build a query to select records from table authorisation to echo out all queries
$query1 = "SELECT permissiongroup,permissionpages FROM authorisation ORDER BY permissiongroup";

// execute the query you created above and store the result in a php variable
$result1= sqlsrv_query($con, $query1) or die(print_r( sqlsrv_errors(), true));

// build a query to select records from table authorisation to echo out all queries
while ($group= sqlsrv_fetch_array($result1))  {
    $permissiongroup=$group['permissiongroup'];
    $permissionpages=$group['permissionpages'];

    echo $permissiongroup;
    echo $permissionpages;
}
?>

说明(如果这是解决方案):
如果这解决了您的问题,则意味着 permissiongrouppermissionpages 不是表 authorisation 的前两个连续列。 select * from [tablename] 将始终以与表结构中相同的顺序返回列名的结果集。建议使用列名而不是 * 来提高性能和更多类似这样的冲突。

否则
如果这没有帮助,请告诉我。

【讨论】:

  • 非常感谢您的详细解释。我已经按照您的要求进行了操作,但是却出现了错误消息。 Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -14 [code] => -14 [2] => 向 sqlsrv_query 传递了一个无效参数。[消息] => 向 sqlsrv_query 传递了一个无效参数。) )
猜你喜欢
  • 1970-01-01
  • 2019-01-03
  • 2021-02-05
  • 1970-01-01
  • 2019-02-14
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多