Я считаю, что проблема связана с тем фактом, что $ result является массивом (возможно, ассоциативным массивом) строк. (Я не знаком с Магом, но я предполагаю, что fetchRow () возвращает только одну строку, а не все ваши строки.)
Поэтому, что происходит, у вас, вероятно, есть что-то вроде этого:
$result = array("tom","dick","harry");
Когда вы запускаете foreach($result as $row)
, $ row на каждой итерации выглядит как "tom", "dick" и "harry".
Поскольку $ row является строкой, при вызове $row[$id]
PHP пытается получить один символ из строки $ row. Поскольку он ожидает, что $ id будет целым числом в этом случае, он, вероятно, интерпретирует «id_field1» как 0, что в итоге вернет первый символ вашей строки.
Я не совсем уверен, что вы пытаетесь вернуть, но, скорее всего, это можно решить, изменив раздел foreach на что-то вроде ...
foreach ($result as $resultColumn) {
var_dump($resultColumn);
}