[英]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.