Так что я пытаюсь запросить таблицу базы данных, которая имеет около 1000 записей, и я пытаюсь получить строки из таблицы ($ subject) на основе, если определенный столбец (тема) является одним из значений определенного массива ($ themes).WHERE column_name IN Array(), возвращающий пустой массив
поэтому моя функция выглядит так.
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. my $ object_array пуст, когда возвращается классу, который вызвал этот метод. Я попытался отобразить каждую строку $ из цикла while, и он работал, но при выходе из цикла while объект $ object_array не дает ничего, кроме «[]». Я думаю, что это имеет какое-то отношение к разделу «WHERE topic IN array», потому что другие запросы работают нормально на этом методе.
Не то, чтобы количество столбцов или «полей» здесь имеет значение, но обратите внимание, что присутствие 1000 столбцов иногда является симптомом плохого дизайна. – Strawberry
Какова ценность '$ subject' в этом случае? – RamRaider
@RamRaider Значение «спорт» может быть передано, так как есть много предметов –