だから私は顧客の買い物かごを扱っています。私が目的に適していると判断した最善の方法は、オブジェクトを (各項目属性のプロパティを設定して) 配列に格納することでした。そのため、オブジェクト ItemObject タイプの配列になりました。
このオブジェクトの配列をMySQLテーブルに保存する最良の方法は、それをシリアル化して文字列に変換してから保存することでした。次に、必要なときに、php 関数を使用して unserialize() できます。
私はちょうどそれをしました...そして今、それをシリアル化解除すると、エラーが発生します....コードは、ItemObjectとシリアル化解除部分の後に続きます。その文字列をシリアル化解除して ItemObjects 型のオブジェクトの配列に戻して、各項目の詳細を反復して出力できるようにするにはどうすればよいですか?
<?php
$dateSelected = $_GET['date'];
echo "Date: ".$dateSelected . "<br>";
mysql_connect();
mysql_select_db("dashjkd");
$result = mysql_query("SELECT order_object FROM orders WHERE orderDate = '".$dateSelected."'");
if(mysql_num_rows($result) > 0){
$temp;
while($row = mysql_fetch_assoc($result)){
$temp = $row['order_object'];
//print_r($temp);
}
echo "Array: <br>";
$basketObjArray = array();
$basketObjArray = unserialize($temp);
print_r($basketObjArray);
foreach($basketObjArray as $key => $value)
{
echo "Key: " . $key;
echo "Value: ". $value;
}
}else{
echo "Something went horribly wrong..try again!";
}
?>
そして、この unserilization コードは、このエラーと奇妙な出力につながります:
Date: 2012-04-18
Array:
Array ( [0] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => ItemObject [itemNameVar] => whitethoab [itemQtyVar] => 12 [itemPriceVar] => 10 ) [1] => stdClass Object ( [itemNameVar] => woolthoab [itemPriceVar] => 10 [itemQtyVar] => 2 ) [2] => stdClass Object ( [itemNameVar] => shemag [itemPriceVar] => 4 [itemQtyVar] => 1 ) [3] => stdClass Object ( [itemNameVar] => jacket [itemPriceVar] => 12 [itemQtyVar] => 2 ) ) Key: 0
Catchable fatal error: Object of class __PHP_Incomplete_Class could not be converted to string in /home/sdsds/public_html/laundry/customerorder.php on line 21
私が設計した itemObject は非常にシンプルで、シリアル化する前に配列を表示しようとしたときに機能しました。
class ItemObject{
public $itemNameVar;
public $itemQtyVar;
public $itemPriceVar;
}
助けてくれてありがとう :)