0

「zip」という名前のデータベース列に対してチェックするために、MySQL クエリで使用しようとしている配列 $ziparray があります。次のコードは論理的に思えますが、エラーが発生します。

キャッチ可能な致命的なエラー: クラス stdClass のオブジェクトを文字列に変換できませんでした...

$ziparrayimplode = implode(",", $ziparray);
$listinghistoryquery = "SELECT * FROM listings WHERE zip IN ($ziparrayimplode) ORDER BY list_ts DESC";
$listinghistory = mysql_query($listinghistoryquery) or die('SQL Error :: '.mysql_error());

$ziparray が配列であることは間違いありません。このクエリを機能させる方法を誰か教えてもらえますか? 配列を作成するために使用されるコードは次のとおりです。

$countyzipquery = mysql_query("SELECT city_zip FROM dev_cities WHERE city_state='$state' AND city_county='$county' AND city_name='$city'");
$ziparray = array();
while (($ziparrayrow = mysql_fetch_object($countyzipquery)) !== FALSE) {
  $ziparray[] = $ziparrayrow;

var_dump($ziparray) の出力は次のとおりです。

array(1) { [0]=> object(stdClass)#3 (1) { ["city_zip"]=> string(5) "63028" } }
4

1 に答える 1

2
while (($ziparrayrow = mysql_fetch_object($countyzipquery)) !== FALSE) {

データベースからオブジェクトを取得し、それらの完全なオブジェクトを$ziparray配列に格納しています。オブジェクトは文字列に変換できないため、オブジェクトを連結stdClassすることはできません (オブジェクトはそのための__toStringメソッドを定義する必要があり、stdClassインスタンスにはそのようなメソッドがありません)。

mysql_fetch_arrayほとんどの場合、(の代わりに)配列をフェッチしてからmysql_fetch_object、最初の要素 ( $ziparrayrow[0]) のみを に格納します$ziparraymysql_fetch_objectまたは、 をそのままにして、 内の要素の蓄積を変更することもでき$ziparrayます。

$ziparray[] = $ziparrayrow->city_zip;
于 2012-11-17T23:21:55.143 に答える