我有一个数组$ 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;

09-29 20:32