моя база данных
CREATE TABLE `mytable` (
`id` int(10) AUTO_INCREMENT,
`name` varchar(50),
`description` varchar(255),
`visible` varchar(10),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET utf8;
и php-код
$display = query("SELECT * FROM mytable ORDER BY id ASC");
foreach($display as $row) {
echo $row['id'];
echo $row['name'];
echo $row['description'];
}
что не так в моем коде? данные не отображаются, и при отображении отображается только первая буква поля. Все настройки конфигурации и подключения в порядке. Справка по Pls
Похоже, та же самая ловушка, в которую я упал однажды:)
У вас нет только одной строки в таблице?
Если функция query() является слишком умной, определение типа возвращаемых данных возвратом данных, это может быть причиной.
Заставьте его возвращать вложенный массив, а не одну строку.
И определить тип результата явно, а не автоматически на основе возвращенных данных. Добавьте параметр, чтобы указать, какой результат вы хотите.
Однако такая функция является очень хорошим подходом. Лишь немногие люди имеют идею разработки такой функции, а не постоянные хлопоты с многочисленными функциями API.
но если вы ожидаете только одну строку, то
$row = query("SELECT * FROM mytable ORDER BY id ASC");
echo $row['id'];
echo $row['name'];
echo $row['description'];
var_dump($row);
У меня была эта же проблема с использованием CodeIgniter.
Проблема для меня заключалась в том, что я пытался отбросить значение массива с помощью ассоциативного ключа, когда это был просто массив с числовой индексацией. Я удивлен, что это сработало вообще.
Итак, мой массив был построен следующим образом:
$result = $this->ci->db->get('role');
if($result->num_rows() > 0)
{
foreach($result->result_array() as $row)
{
$roles[$row['id']] = $row['name'];
}
}
Когда я попытался использовать массив следующим образом:
foreach($roles as $role)
{
echo $role['name'];
}
Он будет печатать только первую букву каждого значения.
Когда я изменил массив, который будет построен следующим образом:
$roles[$row['id']] = array('name' => $row['name']);
Все работало, как ожидалось.
Надеюсь, это поможет кому-то.