0
<?php
if(isset($_GET['b_no'])){ 
  $bno=$_GET['b_no'];

  include("connect.php");
  $query19="select * from billing where `b_no`=$bno";

  $rs19=$conn->execute($query19);

  if($rs19){
         $itm=explode(',',$rs19['item']);
         $qty=explode(',',$rs19['qty']);
          $r=count($itm); 


            for($i=0;$i<=$r;$i++) {  
                       if(isset($itm[$i]) && isset($qty[$i]))    {
                                  echo "item".$itm[$i]; 
                                  echo "qty".$qty[$i];      
                              echo "<br>";  
                        }
            }

    }
    else {  
    echo "no records found";
    }
}

  else { 
  echo "enter bill no";
  }
?> 

データベースにない b_no を入力すると、毎回この警告が表示されます。バックエンドとして Microsoft Access 2007 を使用していますが、次の警告が表示されます。

警告: 爆発 () は、パラメーター 2 が文字列であると想定しており、オブジェクトは 27 行目に指定されています

4

3 に答える 3

1

変数には、連想配列ではなく$rs19結果セットが含まれています。探している連想配列を取得するには、その結果セットから行をフェッチする必要があります。

どの php/mysql ライブラリを使用しているかはわかりませんが、次のようになります。

$row19 = $rs19->fetch();
于 2013-08-22T19:07:35.797 に答える
0

手早く汚い回避策として、これを変更するだけです:

if($rs19){
     $itm=explode(',',$rs19['item']);
     $qty=explode(',',$rs19['qty']);

これに:

if($rs19 && is_string($rs19['item'] && is_string($rs19['qty']){
     $itm=explode(',',$rs19['item']);
     $qty=explode(',',$rs19['qty']);
于 2013-08-23T11:57:27.140 に答える
0

データベースにない場合は、使用する前にチェックを実行する必要がありますexplode()

 if($rs19>0){
     //there is a record
    }
    else {  
    echo "no records found";
    }
于 2013-08-22T18:58:46.590 に答える