我已经查看了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不是数组"。有什么想法吗?
答案 0 :(得分:2)
您需要从查询中获取结果。 mysqli :: query返回一个mysqli_result对象,而不是一个数组。
$result = $db->query($sqlZip);
$dsZip = $result->fetch_array();
为每个查询执行此操作。这是您尝试使用的对象类型: http://php.net/manual/en/class.mysqli-result.php
我希望有所帮助!
答案 1 :(得分:-1)
您应初始化在array_merge_recursive中使用的所有数组,因为它们不能存在于您的代码中。