0

私は 2 次元配列を持っており、その値を個別の変数に取得したいと考えています。これらのコードを使用していますが、次のようなエラーが表示されます

警告: mysql_fetch_assoc() は、パラメーター 1 がリソースであると想定します。

これは、多次元セッションに値を割り当てるために使用しているコードです。

if(isset($_POST['adnother'])) {
  $date = $_POST['date'];
  $billnmbr = $_POST['billnmbr'];
  $itemcode = $_POST['itemcode'];
  $itemname = $_POST['itemname'];
  $exdate = $_POST['exdate'];   
  $eachprice = $_POST['eachprice']; 
  $itmtotal = $_POST['itmtotal'];
  $wasFound=false;
  $i=0; 
 //if the bill session variable is not set or cart array is empty
    if(!isset($_SESSION["bill_array"]) || count($_SESSION["bill_array"]) < 1 ) {
        // Run if the bill is empty or not set
        $_SESSION["bill_array"]= array(1 => array("date"=> $date, "billnmbr"=> $billnmbr, "itemcode"=> $itemcode, "itemname"=> $itemname, "exdate"=> $exdate, "eachprice"=> $eachprice, "itmtotal"=> $itmtotal));
    } else {
        // Run if the bill has at least one item in it
        foreach($_SESSION["bill_array"] as $each_item) {
            $i++;
            while(list($key,$value)=each($each_item)){
                if($key=="itemcode" && $value == $itemcode){
                    // That item is in cart already so push a error message in to screen
                    $wasFound = true;
                    ?>
                    <script type="text/javascript">
                    var error = "<?= $wasFound ?>";
                    if(error == "true") {
                        alert("You trying to add same item twice")
                    }
                    </script>
                    <?php 
                    }//close if condition
            }//close while loop
        }//close foreach loop
if($wasFound==false){
    array_push($_SESSION["bill_array"],array("date"=> $date, "billnmbr"=> $billnmbr, "itemcode"=> $itemcode, "itemname"=> $itemname, "exdate"=> $exdate, "eachprice"=> $eachprice, "itmtotal"=> $itmtotal));
}
    }

割り当てた後、これらのコードでそれらの日付を取得しようとしています

<?php 
$cartOutput="";
if(!isset($_SESSION["bill_array"]) || count($_SESSION["bill_array"]) < 1 ) {
    $cartOutput = "<h2 align='center'> Bill is still empty </hd>";
}
else {
    $i = 0;
    foreach ($_SESSION["bill_array"]as $each_item ) {
        $i++;
    echo    $cartOutput = "<h2> Bill item $i </h2>";
        while($row=mysql_fetch_assoc($each_item)){
        $date1=$row["date"];
        $billnmbr1=$row["billnmbr"];
        $itemcode1=$row["itemcode"];
        $itemname1=$row["itemname"];
        $exdate1=$row["exdate"];
        $eachprice1=$row["eachprice"];
        $itmtotal1=$row["itmtotal"];
        }
    }
     echo $date1;
     echo $billnmbr1;
     echo $itemcode1;
     echo $itemname1;
     echo $exdate1;
     echo $eachprice1;
     echo $itmtotal1;
    }



?>  

エラーがどこにあるのかわかりません。誰でも私を助けてくれませんか

4

2 に答える 2

1

データベースの結果セットであるかのように、配列をループしようとしています。実際にはここでループは必要ありません。キーによって値に直接アクセスできます。

たとえば、これを試してください:

echo $each_item['date'];
于 2012-07-05T05:31:38.950 に答える
0

次のように使用します。

$result = array();
foreach($_SESSION["bill_array"] as $row){
    $result[] = $row;
}
echo '<pre>';
print_r($result);
echo '</pre>';

このようにして、結果を配列で取得します。そして、実際にこれらの変数にアクセスします。

$result[0]、$result[1]など

于 2012-07-05T06:03:50.717 に答える