【发布时间】:2016-02-21 10:04:05
【问题描述】:
所以我正在尝试查询具有接近 1000 条记录的数据库表,并且我正在尝试根据某个列(主题)值是否在一个特定的数组($topics)。
所以我的函数看起来像这样。
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_array 返回到调用此方法的类时为空。 我试图从 while 循环中回显每个 $row 并且它有效,但是在退出 while 循环时,$object_array 甚至没有给出任何“[]”。 我认为这与“WHERE topic IN array”部分有关,因为其他查询在此方法上运行正常。
【问题讨论】:
-
列数或“字段”的数量与此处无关,但请注意,存在 1000 列有时是设计不佳的症状。
-
在这种情况下
$subject的值是多少? -
@RamRaider 可以传入值“sports”,因为有很多主题
-
@Strawberry,我的意思是 1000 条记录,该表大约有 15 个字段(列)。
-
啊,“行”。那不一样了。