PHP脚本只返回SELECT语句的第一行


PHP script only returns first row of SELECT statement

我有一个php脚本来运行mssql查询。当我运行像"SELECT first_name, last_name, mi FROM users"这样的查询时,我得到的只是"first_name"。脚本如下:

<?php
require '../../scripts/database_connection.php';
$query_text = $_REQUEST['query'];
$result = mssql_query($query_text);
 if (!result) {
   die("<p>Error: " . $query_text ."</p>");
}
$return_rows = true;
 if (preg_match("/^'s*(CREATE|INSERT|UPDATE|DELETE|DROP)/i,
   trim(strtoupper($query_text)))) {
  $return_rows = false;
}
if ($return_rows) {
 echo "<p>Results from your query:</p>";
 echo "<ul>";
while ($row = mssql_fetch_row($result)) {
 echo "<li>{$row[0]}</li>";
}
 echo "</ul>";
}
 else {
  if ($result) {
   echo "<p>Your query was processed successfully.</p>";
   echo "<p>$query_text</p>";
 }
}
?> 

有什么建议吗?

$row是一个包含您所选择的所有列的数组。只需迭代foreach或内爆它:

while ($row = mssql_fetch_row($result)) {
    echo "<li>".implode(" - ", $row)."</li>";
}

您可能还想使用mssql_fetch_assoc来获取相应的列名:

  • http://php.net/manual/de/function.mssql-fetch-row.php
  • http://php.net/manual/de/function.mssql-fetch-assoc.php

您是否尝试访问$row[1]和$row[2]?

    while ($row = mssql_fetch_row($result)) {
     echo "<li>{$row[0]} - {$row[1]} - {$row[2]}</li>";
    }