MySQL Where子句中的数组

时间:2012-11-17 23:12:08

标签: php mysql arrays

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

1 个答案:

答案 0 :(得分: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;