从行错误中选择数据

时间:2012-12-01 05:06:51

标签: php

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

$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 个答案:

答案 0 :(得分: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];
 }
}

但是,如果只使用一个查询,则代码效率会更高。

答案 1 :(得分: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$ic$id的值,以防止SQL注入攻击,

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

$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);

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

答案 2 :(得分:0)

  

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

这意味着mysql查询produced errors

  

返回值

     

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回   resultset,mysql_query()在成功时返回资源,或者返回FALSE   错误。

使用mysql_error显示错误并查看错误原因。 e.g。

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

Protip :不要使用php手册中提到的mysql库

答案 3 :(得分:0)

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