0

我有一个数组 $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" } }
4

1 回答 1

2
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;
于 2012-11-17T23:21:55.143 回答