Почему мой счет на массиве хранится в переменной сессии удваивает? -- php поле с участием html поле с участием mysql поле с участием arrays поле с участием phpmyadmin пол Связанный проблема

Why does my array count stored in a session variable doubles?


0
vote

проблема

русский

У меня есть таблица, которая содержит следующие столбцы ..

столбцы базы данных

И я сохранил данные этой таблицы в переменную сеанса

 <код> $sql = "SELECT * from `basic_info` where Username='".$user."' and Password='".$pass."'"; $sqlresult = mysqli_query($con,$sql) or die(mysqli_error($con)); $rowCount = mysqli_num_rows($sqlresult); $currentData = mysqli_fetch_array($sqlresult);  if($rowCount > 0){     $_SESSION['currentUser'] = $currentData; }   

Но всякий раз, когда я повторяю значения массива, используя ниже код:

 <код> <?php  echo "Welcome {$_SESSION['currentUser'][1]}"; echo "<div name='infoDisplay'>"; echo "<table>"; echo "<tr>"; echo "<td><b>Family Name</b><td>"; echo "<td><b>First Name</b><td>"; echo "<td><b>Middle Name</b><td>"; echo "<td><b>Birthday</b><td>"; echo "<td><b>Contact Number</b><td>"; echo "<td><b>Address</b><td>"; echo "<td><b>Username</b><td>"; echo "<td><b>Password</b><td>"; echo "<td><b>Permission Level</b><td>"; echo "<td></td>"; echo "</tr>";   echo "</table>"; echo "</div>";  echo "Array count: " . count($_SESSION['currentUser']) . "<br/>";  echo "<tr>"; for($rowcount=0; $rowcount<=count($_SESSION['currentUser']);$rowcount++){     echo "<td>". $_SESSION['currentUser'][$rowcount] . "</td>"; } echo "</tr>";  ?>   

Количество массива удваивается. У меня есть только 9 столбцов в моей базе данных, но результат возвращает 18 счет. Что почему я также получаю ниже ошибки:

ОШИБКА

Пожалуйста, дайте мне знать ваши данные о том, как я могу легко решить проблему. Заранее большое спасибо! Хорошего дня!

Английский оригинал

I have a table which contains the following columns..

database columns

And I stored the data of that table in a session variable

$sql = "SELECT * from `basic_info` where Username='".$user."' and Password='".$pass."'"; $sqlresult = mysqli_query($con,$sql) or die(mysqli_error($con)); $rowCount = mysqli_num_rows($sqlresult); $currentData = mysqli_fetch_array($sqlresult);  if($rowCount > 0){     $_SESSION['currentUser'] = $currentData; } 

But whenever i echo the values of the array using below code:

<?php  echo "Welcome {$_SESSION['currentUser'][1]}"; echo "<div name='infoDisplay'>"; echo "<table>"; echo "<tr>"; echo "<td><b>Family Name</b><td>"; echo "<td><b>First Name</b><td>"; echo "<td><b>Middle Name</b><td>"; echo "<td><b>Birthday</b><td>"; echo "<td><b>Contact Number</b><td>"; echo "<td><b>Address</b><td>"; echo "<td><b>Username</b><td>"; echo "<td><b>Password</b><td>"; echo "<td><b>Permission Level</b><td>"; echo "<td></td>"; echo "</tr>";   echo "</table>"; echo "</div>";  echo "Array count: " . count($_SESSION['currentUser']) . "<br/>";  echo "<tr>"; for($rowcount=0; $rowcount<=count($_SESSION['currentUser']);$rowcount++){     echo "<td>". $_SESSION['currentUser'][$rowcount] . "</td>"; } echo "</tr>";  ?> 

the array count is doubled. I only have 9 columns in my database but the result is returning 18 counts. Which why I'm also getting below error:

error

Please let me know your inputs on how can I easily resolve the issue. Thank you very much in advance! Have a great day!

</div
              
       
       

Список ответов

0
 
vote

Как уже упоминалось в комментариях, <Код> mysqli_fetch_array Возвращает массив с двумя элементами для каждого столбца, выбранного в запросе: один элемент с цифровым ключом, и один элемент, ключ которого является именем столбца. Так что, если вы выберете 9 столбцов, массив будет иметь числовые клавиши из <код> 0 <код> 8 , а именованные ключи <код> FamilyName , <код> FirstName код>, и так далее.

Проблема, в которой вы работаете <код> count($_SESSION['currentUser']) подсчитывает оба этих элемента, чтобы он вернулся <код> pragma solidity ^0.4.11;0 , а не <код> pragma solidity ^0.4.11;1 . Ваш <код> pragma solidity ^0.4.11;2 COLOOR использует это как предел, поэтому он попытается повторять <код> pragma solidity ^0.4.11;3 через <код> pragma solidity ^0.4.11;4 , который не существует.

Решение для этого - использовать <код> pragma solidity ^0.4.11;5 вместо <кода> pragma solidity ^0.4.11;6 . Или используйте <код> pragma solidity ^0.4.11;7 и используйте <код> pragma solidity ^0.4.11;8 loop вместо pragma solidity ^0.4.11;9 loop, который является моим нормальным предпочтением.

 

As mentioned in the comments, mysqli_fetch_array returns an array with two elements for each column selected in the query: one element with a numeric key, and one element whose key is the column name. So if you select 9 columns, the array will have numeric keys from 0 to 8, and named keys FamilyName, FirstName, and so on.

The problem you're running into count($_SESSION['currentUser']) counts both of these elements, so it will return 18, not 9. Your for loop then uses this as the limit, so it will try to echo $_SESSION['currentUser'][9] through $_SESSION['currentUser'][17], which don't exist.

The solution to this is to use mysql_fetch_row() instead of mysql_fetch_array(). Or use mysql_fetch_assoc() and use a foreach loop instead of a for loop, which is my normal preference.

</div
 
 
0
 
vote

из руководства:

mysqli_fetch_array () - это расширенная версия функции mysqli_fetch_row (). В дополнение к хранению данных в числовых показателях результата массив результатов функция mysqli_fetch_array () также может хранить данные в ассоциативных индексах, используя имена полевых полей результата, набора в качестве клавиш.

Так что для каждой строки вы возвращаете, позволяет сказать, что вы сделали <код> pragma solidity ^0.5.00

Вы получите массив для каждой такой строки: -

 <код> pragma solidity ^0.5.01  

Это удвоение колонн, о которых вы говорите

Если вы используете

 <код> pragma solidity ^0.5.02  

или

 <код> pragma solidity ^0.5.03  

Вы получите только ассоциативный массив названий столбцов, таких как:

 <код> pragma solidity ^0.5.04  
 

FROM THE MANUAL:

mysqli_fetch_array() is an extended version of the mysqli_fetch_row() function. In addition to storing the data in the numeric indices of the result array, the mysqli_fetch_array() function can also store the data in associative indices, using the field names of the result set as keys.

So for each row you return lets say you did select fname,lname from ...

You would get an array for each row like this:-

$row would be   [0 => 'fred', 'fname' => 'fred', 1 => 'Bloggs', 'lname' => 'Bloggs'] 

This is the doubling up of columns you are talking about

If you use

mysqli_fetch_array($sqlresult, MYSQLI_ASSOC); 

or

mysqli_fetch_assoc($sqlresult); 

You will only get the Associative array of column names like :

['fname' => 'fred', 'lname' => 'Bloggs'] 
</div
 
 

Связанный проблема

13  Отфильтровать номера в строке в PHP  ( Filter out numbers in a string in php ) 
Предполагая, что у меня есть эти тексты 'x34', '150px', '650dpi', 'E3R4T5' ... Как я могу получить только номера? Я имею в виду, я хочу 34, 150, 650, 345 без ...

5  Экспорт SVG в PDF в автономном TideSDK WebApp  ( Exporting svg to pdf in a offline tidesdk webapp ) 
У меня есть приложение Offline HTML5 / CSS / JS, построенное с TIDESDK, в котором гистограмма нарисована с HighCharts в качестве SVG «Tag», используя данные, ...

1  Транзакции mysql и php  ( Transactions mysql and php ) 
Я запутался ABT работает транзакциями через PHP-скрипт. В моем MySQL AutoCommit устанавливается на 1, Тем не менее, когда я запускаю скрипт ex: mysql_query ...

1  Разбор XML-документа с PHP с использованием петли «Foreach»  ( Parsing xml document with php using foreach loop ) 
Я новичок в php, mysql и xml ... и пытался обернуть голову вокруг классов, объектов, массивов и петель. Я работаю над анализатором, который извлекает данные и...

0  Файл не загружается в Интернете (офлайн / локальные работы)  ( File not being uploaded online offline local works ) 
Чехол: Загрузка аватаров. Это работает в автономном режиме на моем localhost, но после того, как поместил его онлайн в 000webhost Provider, это больше не рабо...

0  Ограничение результатов Flickr API, чтобы избежать дублирования фотографий от пользователя?  ( Limiting a results flickr api to avoid duplicate photos from a user ) 
пытается выводить изображения Flickr из определенного местоположения, не используя ни одного геолокации, но только строка местоположения, но это проблема для ...

0  Вставить арабский с помощью PDO не работает  ( Insert arabic using pdo is not working ) 
Я очень глубоко укорую в этом и посмотрите много вопросов, и это не работает Каждый раз, когда я пытаюсь вставить арабский, он показывает так (?????) <Сильн...

1  Symfony 3.4.3 - Контейнер обслуживания: Ошибка требует, чтобы вы предоставляете значение для  ( Symfony 3 4 3 service container error requires that you provide a value for t ) 
Я потратил много времени, но я не решил это Я хотел бы пройти в LoggerInterface в действии моего контроллера Вот мой Service.yml <код> # Learn more about ...

0  Как я могу надежно разрешить веб-пользователям создавать файлы?  ( How can i securely allow web users to create files ) 
Я строю веб-сайт, который позволяет определенным пользователям писать отзывы, и я хочу автоматически генерироваться небольшой PHP-файл, когда они делают. Како...

-1  PHP возвращает неправильную строку в MySQLI подготовленной статусы  ( Php returning wrong row in mysqli prepared statment ) 
Я пытаюсь создать тщеславие URL для моего сайта, и на данный момент есть только одно имя пользователя в базе данных, которые можно ссылаться. Мой запрос верне...

1  PHP: профилированный код и строгая среда ~ улучшение моего кодирования  ( Php profiling code and strict environment improving my coding ) 
Я хотел бы обновить свою локальную рабочую среду, чтобы быть более строгим, чтобы улучшить мой код. Я знаю, что мой код в порядке, но как с большинством вещей...

1  Yii с расширением загрузки, псевдоним «Bootstrap.widgets.tbnavbar» недействителен. Убедитесь, что он указывает на существующий файл PHP  ( Yii with bootstrap extension alias bootstrap widgets tbnavbar is invalid make ) 
Я пытаюсь использовать Расширение Bootstrap с Yii, но я продолжаю получать Ошибка, упомянутая в заголовке, я дважды проверил мой файл конфигурации, но я не ...

1  add_menu_page не добавляет никаких страниц в WordPress  ( Add menu page doesnt add any pages in wordpress ) 
Я не могу понять, почему мой код не работает. Я разрабатываю плагин в WordPress, и я хочу иметь страницу на панели администратора. Я попробовал этот код, поло...

0  PHP Уведомление: undefined Holvil: stdclass:  ( Php notice undefined property stdclass ) 
У меня есть массив, возвращаясь из флэш-приложения, созданного в Flash Builder 4. У меня есть настройка службы, которые запросили и получают данные от DB, о...

1  Как мне позвонить сценарий Perl с моим контроллером Symfony2?  ( How do i call a perl script from my symfony2 controller ) 
Я пытаюсь реализовать автоматическую отправку в систему управления информацией из-за моего приложения Symfony2. Кто-то еще написал сценарий Perl для представл...

Связанный проблема

13  Отфильтровать номера в строке в PHP 
5  Экспорт SVG в PDF в автономном TideSDK WebApp 
1  Транзакции mysql и php 
1  Разбор XML-документа с PHP с использованием петли «Foreach» 
0  Файл не загружается в Интернете (офлайн / локальные работы) 
0  Ограничение результатов Flickr API, чтобы избежать дублирования фотографий от пользователя? 
0  Вставить арабский с помощью PDO не работает 
1  Symfony 3.4.3 - Контейнер обслуживания: Ошибка требует, чтобы вы предоставляете значение для 
0  Как я могу надежно разрешить веб-пользователям создавать файлы? 
-1  PHP возвращает неправильную строку в MySQLI подготовленной статусы 
1  PHP: профилированный код и строгая среда ~ улучшение моего кодирования 
1  Yii с расширением загрузки, псевдоним «Bootstrap.widgets.tbnavbar» недействителен. Убедитесь, что он указывает на существующий файл PHP 
1  add_menu_page не добавляет никаких страниц в WordPress 
0  PHP Уведомление: undefined Holvil: stdclass: 
1  Как мне позвонить сценарий Perl с моим контроллером Symfony2?