我有一个数组$ ziparray,我试图在MySQL查询中使用它来检查名为“ zip”的数据库列。以下代码对我来说似乎合乎逻辑,但出现错误:
可捕获的致命错误:无法转换类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" } }
最佳答案
while (($ziparrayrow = mysql_fetch_object($countyzipquery)) !== FALSE) {
您正在从数据库中获取对象,然后将这些完整的对象存储到您的
$ziparray
数组中。您无法串联stdClass
对象,因为它们无法转换为字符串(一个对象需要为此定义一个__toString
方法,而stdClass
实例没有这种方法)。您很可能希望获取数组(
mysql_fetch_array
而不是mysql_fetch_object
),然后仅将第一个元素($ziparrayrow[0]
)存储在$ziparray
中。另外,您可以保留mysql_fetch_object
,但更改$ziparray
中的元素累积:$ziparray[] = $ziparrayrow->city_zip;