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];
 }
}

ただし、クエリを 1 つだけ使用すると、コードの効率が大幅に向上します。

于 2012-12-01T05:14:49.890 に答える
0

あなたは本当に奇妙なことをしています。テーブル内の列のリストのように見え$selectますが、一度に 1 列ずつフェッチしています!

次のクエリを使用して、一度にすべてを選択できます。

$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 クエリを動的に作成する場合も十分に注意してください。SQL インジェクション攻撃から保護するために$is、 、$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);

結果が false の場合、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 : php マニュアルに記載されているように、mysql ライブラリを使用しないでください

于 2012-12-01T05:19:43.310 に答える
0

選択ステートメントに問題があります。選択クエリを確認するか、個別の選択クエリを実行して出力を確認してください。

于 2012-12-01T05:21:08.657 に答える