1

我有一些代码可以从一行中选择数据。它正在工作并正确打印结果,但我有一个我无法弄清楚的错误。

$rs=array();    
$select=array ("system_name", "location", "alarmtype", "severity", "start_time",     "end_time", "duration", "reason","shift_oparation", "system_oparation");

for ($i=0;$i<=9;$i++){
    $SQL = "SELECT (".$select[$i].") FROM (".$is.")  WHERE duration=('".$ic."') AND location=('".$id."')";
    $result = mysql_query($SQL);
    $db_field = mysql_fetch_array($result);
    $rs[$i]=$db_field[$select[$i]];
    echo $rs[$i];
}

Echo 打印正确,但是有错误:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given.

4

4 回答 4

1

我认为您的一些查询不会返回任何内容。为了摆脱警告,您应该检查它是否$result实际上是一种资源。

试试这个:

$rs=array();    
$select=array ("system_name", "location", "alarmtype", "severity", "start_time",     "end_time", "duration", "reason","shift_oparation", "system_oparation");

for ($i=0;$i<=9;$i++){
$SQL = "SELECT (".$select[$i].") FROM (".$is.")  WHERE duration=('".$ic."') AND location=('".$id."')";
$result = mysql_query($SQL);

 if($result){
  $db_field = mysql_fetch_array($result);
  $rs[$i]=$db_field[$select[$i]];
  echo $rs[$i];
 }
}

但是,如果您只使用一个查询,您的代码将更加高效。

于 2012-12-01T05:14:49.890 回答
0

你正在做一些非常奇怪的事情。它看起来像是$select一个表中的列列表,您一次获取一列!

您可以使用以下查询一次全部选择它们:

$sql = "SELECT system_name, location, alarmtype, severity, 
start_time, end_time, duration, reason, shift_oparation, system_oparation
FROM " . $is . " WHERE duration = '" . $ic . "' AND location = '" . $id . "'";

请注意,我已经删除了一些多余的括号。在像这样动态构建 SQL 查询时也要非常小心。我假设您知道、 和的值$is,以免受到 SQL 注入攻击,$ic$id

运行结果,然后遍历行数组

$result = mysql_query($sql);

if ($result)
{
    $row = mysql_fetch_array($result); //fetches the first result row as an array
                                       // Can be accessed like $row['system_name'] 

    foreach ($row as $key => $value)
        echo $key, " = ", $value;
}
else
    die(mysql_error() . $sql);

如果结果为假,它将执行 die 语句并打印出 MySQL 返回的错误以及我们构建的查询,以便您查看它是否正确。

于 2012-12-01T05:19:15.777 回答
0

警告:mysql_fetch_array() 期望参数 1 是资源,给出的布尔值。

这意味着 mysql 查询 产生了错误

返回值

对于 SELECT、SHOW、DESCRIBE、EXPLAIN 和其他返回结果集的语句,mysql_query() 成功时返回资源,错误时返回 FALSE。

使用mysql_error 显示错误并查看它发生的原因。例如

if(!$result){
   echo mysql_error();
  }

Protip:不要使用 mysql 库,如 php 手册中所述

于 2012-12-01T05:19:43.310 回答
0

选择语句有问题请检查选择查询,或者您可以运行单个选择查询并检查输出

于 2012-12-01T05:21:08.657 回答