Пример макета таблицы: http://rextester.com/QSDQA17146
Я не уверен на 100% ... но я полагаю, что ошибка происходит из-за стороны запроса ....
Справочная информация:У меня есть запрос .. что я передаю массив для использования для извлечения данных на основе этого значения / поля в массиве из таблицы.
Я изначально использовал предложение IN () ... нопотому что мой массив может / имеет дубликаты (то есть: 1, 2, 3, 4, 2, 3, 6, 7) .. Мне нужна строка, возвращаемая для каждого значения в предложении IN () (хотя есть только 1строка в таблице) ..
После получения некоторой справки здесь .. Мне сказали обновить это до запроса UNION ALL .. чтобы я мог фактически получить строку, возвращаемую для каждого элемента в моем массиве (независимо от того,это был дубликат или нет)
SELECT * FROM tablex
WHERE CONCAT(brandname, ' ', dosage) IN (
'Zyflo CR Extended-release tablet 600 mg',
' SEE NOTES BELOW',
'Zyflo CR Extended-release tablet 600 mg'
) ORDER BY FIELD(
CONCAT(brandname, ' ', dosage),
'Zyflo CR Extended-release tablet 600 mg',
' SEE NOTES BELOW',
'Zyflo CR Extended-release tablet 600 mg'
);
Поэтому я обновил все, что мог, используя вызовы PDO и UNION ALL.
SELECT t.* FROM (
SELECT 1 as seq,
'Zyflo CR Extended-release tablet 600 mg' as item
UNION ALL
SELECT 2, ' SEE NOTES BELOW '
UNION ALL
SELECT 3, 'Zyflo CR Extended-release tablet 600 mg'
) AS inList
INNER JOIN pbaap_drugs AS t ON inList.item = CONCAT(t.brandname, ' ', t.dosage);
Теперь я получаю строку, возвращаемую для каждого элемента.. однако возвращаемые данные НЕ придерживаются первоначального порядка массива, переданного в запрос.
Я вызываю функцию / quвот так:
$gn_displayList = get_displayList_alt($tablename, $conn, array_values(array_filter($_POST['gn_MedicineSelect'])));//array_filter() added to get count of only non empty indexes (no bloat)
Я попытался вывести некоторый код DEBUG и проследить, где / где меняется порядок массивов ... и, похоже, он находится в части возврата запроса?
Здесьэто массив (анализируемый), когда он передается в функцию выше:
FILTERED ARRAY CONTENTS: array(3) { [0]=> string(39) "Zyflo CR Extended-release tablet 600 mg" [1]=> string(17) " SEE NOTES BELOW " [2]=> string(39) "Zyflo CR Extended-release tablet 600 mg" }
В реальной функции запроса, где я динамически создаю структуру UNION ALL..etc .. Я проверяю массив снова (могуопубликуйте это ... но я не хочу отвлекать внимание от порядка вещей);)
array(3) { [0]=> string(39) "Zyflo CR Extended-release tablet 600 mg" [1]=> string(17) " SEE NOTES BELOW " [2]=> string(39) "Zyflo CR Extended-release tablet 600 mg" }
Все, кажется, хорошо .. правильное содержание .. и правильный первоначальный порядок.
Однако ... когда я получаю ответ на запрос / данные ... порядок НЕ тот же.Вроде альфа разобрала?
array(3) { [0]=> array(10) { ["id"]=> string(2) "74" ["lastupdated"]=> string(19) "0000-00-00 00:00:00" ["category"]=> string(24) "5-Lipoxygenase Inhibitor" ["brandname"]=> string(32) "Zyflo CR Extended-release tablet" ["genericname"]=> string(8) "zileuton" ["dosage"]=> string(6) "600 mg" ["image"]=> string(43) "Zyflo CR Extended-release tablet 600 mg.jpg" ["zone"]=> string(16) "green,yellow,red" ["menu"]=> string(1) "1" ["active"]=> string(1) "1" } [1]=> array(10) { ["id"]=> string(2) "74" ["lastupdated"]=> string(19) "0000-00-00 00:00:00" ["category"]=> string(24) "5-Lipoxygenase Inhibitor" ["brandname"]=> string(32) "Zyflo CR Extended-release tablet" ["genericname"]=> string(8) "zileuton" ["dosage"]=> string(6) "600 mg" ["image"]=> string(43) "Zyflo CR Extended-release tablet 600 mg.jpg" ["zone"]=> string(16) "green,yellow,red" ["menu"]=> string(1) "1" ["active"]=> string(1) "1" } [2]=> array(10) { ["id"]=> string(2) "78" ["lastupdated"]=> string(19) "0000-00-00 00:00:00" ["category"]=> string(0) "" ["brandname"]=> string(16) " SEE NOTES BELOW" ["genericname"]=> string(0) "" ["dosage"]=> string(0) "" ["image"]=> string(0) "" ["zone"]=> string(16) "green,yellow,red" ["menu"]=> string(1) "1" ["active"]=> string(1) "1" } }