簡體   English   中英

array_merge_recursive聲明數組不是數組

[英]array_merge_recursive claims array is not an array

我瀏覽了SO上的帖子,但找不到任何能解決我的問題的東西。 我對PHP / MySQL相當陌生,似乎無法弄清楚為什么這個array_merge_recursive函數總是告訴我我的第一個數組不是數組。 我已經對其進行了測試,一切都告訴我它是…直到達到此功能。 這是我的代碼。 我正在嘗試從搜索表單中處理多個可選變量(我已經研究了Sphinx / Lucene,但目前無法使用它們)。 首先,我要處理一些已發布到頁面的變量。

if (isset($_POST['city'])) {
    $search = mysqli_real_escape_string($db, $_POST['city']);
    $sqlCity = "SELECT `user_id` FROM `clients` WHERE MATCH (`city`) AGAINST ('$search' IN NATURAL LANGUAGE MODE)";
    $dsCity = $db->query($sqlCity);
}

if (isset($_POST['state'])) {
    $search = mysqli_real_escape_string($db, $_POST['state']);
    $sqlState = "SELECT `user_id` FROM `clients` WHERE `state` = $search";
    $dsState = $db->query($sqlState);
}

if (isset($_POST['zip'])) {
    $search = mysqli_real_escape_string($db, $_POST['zip']);
    $sqlZip = "SELECT `user_id` FROM `clients` WHERE `zip` = $search";
    $dsZip = $db->query($sqlZip);
}

if (isset($_POST['business-name'])) {
    $search = mysqli_real_escape_string($db, $_POST['business-name']);
    $sqlBus = "SELECT `user_id` FROM `clients` WHERE `business_name` = '$search' ";
    $dsBus = $db->query($sqlBus);
}

然后,我想將結果數組合並為一個數組,該數組作為單個變量傳遞給其余的PHP代碼。

// Create array from Detailed Search variables
if (isset($_POST['city']) || isset($_POST['state']) || isset($_POST['zip']) || isset($_POST['business-name']) ) {
    $searchResults = array_merge_recursive($dsCity, $dsState, $dsZip, $dsBus);
}

?>

[在此處展開​​成一些HTML…,然后進行處理。 其余代碼工作正常。 在錯誤發生之前,我一直在收到錯誤消息。]

while ($row=$searchResults->fetch_object()) {
    $userID = $row->user_id;

我不斷收到的錯誤消息是“ array_merge_recursive():參數1不是數組”。 有任何想法嗎?

您需要從查詢中取回結果。 mysqli :: query返回mysqli_result對象,而不是數組。

$result = $db->query($sqlZip);
$dsZip = $result->fetch_array();

針對您的每個查詢執行此操作。 這是您嘗試使用的對象類型: http : //php.net/manual/en/class.mysqli-result.php

希望對您有所幫助!

您應該初始化在array_merge_recursive中使用的所有數組,因為它們在您的代碼中不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM