почему только первая буква столбца приходит из базы данных mysql в php?

0

моя база данных

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

  • 2
    что в этой функции запрос? Вы имеете в виду mysql_query
Теги:

3 ответа

1

Похоже, та же самая ловушка, в которую я упал однажды:)
У вас нет только одной строки в таблице? Если функция query() является слишком умной, определение типа возвращаемых данных возвратом данных, это может быть причиной.
Заставьте его возвращать вложенный массив, а не одну строку. И определить тип результата явно, а не автоматически на основе возвращенных данных. Добавьте параметр, чтобы указать, какой результат вы хотите.

Однако такая функция является очень хорошим подходом. Лишь немногие люди имеют идею разработки такой функции, а не постоянные хлопоты с многочисленными функциями API.

но если вы ожидаете только одну строку, то

$row = query("SELECT * FROM mytable ORDER BY id ASC");
echo $row['id'];
echo $row['name'];
echo $row['description'];     
1
var_dump($row);
  • 0
    он отображает int (4) string (4) "sdfs" string (12) "fsgdfgfdgfds" string (3) "dgd"
  • 0
    Как получить значения массива? пожалуйста помоги.
Показать ещё 2 комментария
0

У меня была эта же проблема с использованием 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']);

Все работало, как ожидалось.

Надеюсь, это поможет кому-то.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню