Php 其中Array()中的列_name返回空数组

Php 其中Array()中的列_name返回空数组,php,mysql,arrays,mysqli,Php,Mysql,Arrays,Mysqli,因此,我试图查询一个有近1000条记录的数据库表,并试图根据某个列(主题)值是否在特定数组(主题)的值中,从表($subject)中获取行 我的函数是这样的 public static function find_records($subject="", $topics=[]){ global $database; foreach($topics as $key => $topic) { $topics[$key] = $database-&

因此,我试图查询一个有近1000条记录的数据库表,并试图根据某个列(主题)值是否在特定数组(主题)的值中,从表($subject)中获取行

我的函数是这样的

public static function find_records($subject="", $topics=[]){

      global $database;

      foreach($topics as $key => $topic) {
          $topics[$key] = $database->escape_value($topic);
      }

      $newtopics = join("','", $topics);
      $sql = "SELECT * FROM ".$subject." WHERE topic IN ('$newtopics')";

      $result_set = $database->query($sql);

      $object_array = array();
      while ($row = $result_set->fetch_array()) {
        $object_array[] = $row;
      }

      return !empty($object_array) ? $object_array : false;
}
我有一个处理所有查询和转义函数的数据库类,它使用mysqli。 我的$object_数组返回调用此方法的类时为空。 我试图从while循环中回显每个$row,但在退出while循环时,$object_数组没有给出任何东西,甚至没有给出“[]”。
我认为这和“数组中的WHERE主题”部分有关,因为其他查询在这个方法上运行正常

循环中,更改

$row = $database->fetch_array($result_set)


$database
是一个对象实例,而您需要实例来实际从中获取结果。

这几乎是为了证明sql实际上是正确的(这不应该是问题的解决方案-尽管$subject可能有问题?)


这里的列数或“字段”数并不相关,但请注意,1000列的存在有时是设计不佳的症状。在这种情况下,
$subject
的值是多少?@RamRaider由于有很多列,所以可以传入值“sports”subjects@Strawberry,我的意思是1000条记录,这个表大约有15个字段(列)。啊,“行”。这是不同的。更改它不起作用,我仍然没有得到任何响应。但有趣的是,在“echo$row”上,在while循环中,我得到了大约8条记录被吐出。结果仍然相同。请在问题中显示更改后的代码好吗?如果没有看到,很难判断发生了什么。(保留问题的其余部分,只需在最后添加更改后的代码。)我将其更改为显示给您。但是“echo$row”的结果现在返回一个MYSQLI_BOTH(将$key-$value对显示为数值和属性值)实例,而不是MYSQLI_ASSOC(仅属性值)实例。您可以使用
fetch\u assoc()
而不是
fetch\u array()
,或者将常量直接传递到函数-
fetch\u array(MYSQLI\u assoc)
$row = $result_set->fetch_array()
/* example data */
$subject='cars';
$topics=array('size','shape','colour','weight');

$newtopics = join("','", $topics);
$sql = "SELECT * FROM `".$subject."` WHERE `topic` IN ( '$newtopics' );";
echo $sql;

will output
SELECT * FROM `cars` WHERE `topic` IN ( 'size','shape','colour','weight' );