Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Непонятки с mysql_fetch_array...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Hapson
Отправлено: 21 Июня, 2013 - 20:38:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Столкнулся с непоняткой.
Есть таблица в базе - users. В ней заполнена всего одна строка - id, login, password, reg_date, status.
Делаю так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. if(/*если пришла форма*/){
  2.         if(/*если есть ошибка заполнения*/){
  3.                 $error_auth = 'Проверьте правильность заполнения полей - не менее 6 и не более 15 символов(латинские буквы верхнего, нижнего регистров и цифры).';
  4.         }else{
  5.                 $user_login = $_POST['login'];
  6.                 $user_password = $_POST['password'];
  7.                
  8.                 db_connect();
  9.                 $query =("SELECT id, login, password, reg_date, status
  10.                                         FROM `" . DB_PREF . "users`
  11.                                         WHERE `login` = '" . $user_login . "'
  12.                                         AND `password` = '" . $user_password . "'");
  13.                 $auth = mysql_query($query);
  14.                 unset($query);
  15.                 mysql_close();
  16.                
  17.                 if(mysql_num_rows($auth) > 0){
  18.                         //собираем данные пользователя
  19.                         $user_info = mysql_fetch_array($auth);
  20.                        
  21.                         //если в выбранных данных статус пользователя 1,то все ОК - это админ пришел
  22.                         if($user_info['status'] == 1){
  23.                                 $user_status = 1;
  24.                                 $user_id = $user_info['id'];
  25.                                 $user_login = $user_info['login'];
  26.                                 $user_password = $user_info['password'];
  27.                                 $_SESSION['id'] = $user_id;
  28.                                 header('Location: ' . $_SERVER['PHP_SELF']);
  29.                                 exit;


Смотрим
CODE (htmlphp):
скопировать код в буфер обмена
  1. echo '<pre>';
  2. echo print_r($user_info);
  3. echo '<br /><br />';
  4. var_dump($user_info);
  5. echo '</pre>';


Видим
Цитата:
Array
(
[0] => 1
[id] => 1
[1] => tester
[login] => tester
[2] => tester
[password] => tester
[3] => 1371074215
[reg_date] => 1371074215
[4] => 1
[status] => 1
)
1

array(10) {
[0]=>
string(1) "1"
["id"]=>
string(1) "1"
[1]=>
string(6) "tester"
["login"]=>
string(6) "tester"
[2]=>
string(6) "tester"
["password"]=>
string(6) "tester"
[3]=>
string(10) "1371074215"
["reg_date"]=>
string(10) "1371074215"
[4]=>
string(1) "1"
["status"]=>
string(1) "1"
}


Что за 1 после массива? После вывода print_r
Ни один массив не показывает 1, кроме этого.
В исходном коде 1 идет сразу после вывода print_r
(Добавление)
если через print_r вывести одну ячейку из массива $user_info, то в конце выводимого значения также стоит 1...
(Добавление)
PS

CODE (htmlphp):
скопировать код в буфер обмена
  1. foreach($user_info as $a => $b){
  2.         echo "$a = $b<br />";
  3. }


Цитата:
0 = 1
id = 1
1 = tester
login = tester
2 = tester
password = tester
3 = 1371074215
reg_date = 1371074215
4 = 1
status = 1

(Добавление)
PPS

вру
после вывода любого массива через print_r, в конце 1. Что это за единица?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Мелкий Супермодератор
Отправлено: 21 Июня, 2013 - 21:19:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Hapson пишет:
Что за 1 после массива? После вывода print_r

print_r возвращает true. echo послушно приводит булево значение к строке и выводит единицу.


-----
PostgreSQL DBA
 
 Top
DelphinPRO
Отправлено: 21 Июня, 2013 - 21:59:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




а чтобы print_r возвращал строку, а не выводил ее, нужно передать вторым параметром true



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB