Я пытаюсь перейти от прямых mysqli_queries к подготовленным операторам. Я могу принять запрос с помощью mysqli_execute_query, но у меня возникли проблемы с возвратом результатов. Существует ли прямой эквивалентный метод для замены mysqli_num_rows, mysqli_fetch_array, mysqli_num_fields, mysqli_fetch_field_direct?
Все, что я пробовал до сих пор, возвращает NULL.
(После некоторого поиска я нашел это на другой форум, который объясняет, почему у меня возникла проблема, но не дает немедленного решения: Протокол клиентского сервера MySQL определяет другой протокол передачи данных для подготовленных операторов и неподготовленных операторов. Подготовленные операторы используют так называемый двоичный протокол. Сервер MySQL отправляет данные набора результатов «как есть» в двоичном формате.)
Все начинается с формы поиска, которая имеет более 40 возможных записей, некоторые для поиска, некоторые для вещи для вывода. При отправке формы сканируются почтовые переменные и запрос строится на лету.
Запрос отправляется и обычно возвращает несколько строк, каждая из которых содержит список имен столбцов и значений. Приведенный ниже пример кода сканирует эти возвращенные данные, первоначально ища имена столбцов и получая их позицию в строке.
Проблема, с которой я столкнулся, заключается в том, что mysqli_query и mysqli_execute_query не возвращают данные, структурированные одинаково, и я не понимаю, как читать результаты mysqli_execute_query.
Часть существующего кода:
$initial_run=true;
$last_familynum=-1;
while($row=mysqli_fetch_array($result))
{
// var_dump($row);
if ($initial_run)
{
// scan field names, check they are needed for output
// add the field numbers to $fieldarray[$index]
// note the field numbers of special values in tag variables
$tag_email_breakout=-1;
$tag_verbose_email=-1;
$tag_expires=-1;
$tag_newcard=-1;
$tag_joined=-1;
$tag_familynum=-1;
$tag_no_send_email=-1;
$tag_email=-1;
// $c="";
$num_fields=mysqli_num_fields($result);
// debug("header contains $num_fields column names
");
for ($index=0; $index name;
// echo "field_name=$field_name
";
if ($field_name == "email_breakout") { $tag_email_breakout=$index; }
if ($field_name == "verbose_email") { $tag_verbose_email=$index; }
if ($field_name == "expires") { $tag_expires=$index; }
if ($field_name == "newcard") { $tag_newcard=$index; }
Подробнее здесь: https://stackoverflow.com/questions/790 ... cute-query
Итерация результатов из mysqli_execute_query [закрыто] ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1728309619
Anonymous
Я пытаюсь перейти от прямых mysqli_queries к подготовленным операторам. Я могу принять запрос с помощью mysqli_execute_query, но у меня возникли проблемы с возвратом результатов. Существует ли прямой эквивалентный метод для замены mysqli_num_rows, mysqli_fetch_array, mysqli_num_fields, mysqli_fetch_field_direct?
Все, что я пробовал до сих пор, возвращает NULL.
(После некоторого поиска я нашел это на другой форум, который объясняет, почему у меня возникла проблема, но не дает немедленного решения: Протокол клиентского сервера MySQL определяет другой протокол передачи данных для подготовленных операторов и неподготовленных операторов. Подготовленные операторы используют так называемый двоичный протокол. Сервер MySQL отправляет данные набора результатов «как есть» в двоичном формате.)
Все начинается с формы поиска, которая имеет более 40 возможных записей, некоторые для поиска, некоторые для вещи для вывода. При отправке формы сканируются почтовые переменные и запрос строится на лету.
Запрос отправляется и обычно возвращает несколько строк, каждая из которых содержит список имен столбцов и значений. Приведенный ниже пример кода сканирует эти возвращенные данные, первоначально ища имена столбцов и получая их позицию в строке.
Проблема, с которой я столкнулся, заключается в том, что mysqli_query и mysqli_execute_query не возвращают данные, структурированные одинаково, и я не понимаю, как читать результаты mysqli_execute_query.
Часть существующего кода:
$initial_run=true;
$last_familynum=-1;
while($row=mysqli_fetch_array($result))
{
// var_dump($row);
if ($initial_run)
{
// scan field names, check they are needed for output
// add the field numbers to $fieldarray[$index]
// note the field numbers of special values in tag variables
$tag_email_breakout=-1;
$tag_verbose_email=-1;
$tag_expires=-1;
$tag_newcard=-1;
$tag_joined=-1;
$tag_familynum=-1;
$tag_no_send_email=-1;
$tag_email=-1;
// $c="";
$num_fields=mysqli_num_fields($result);
// debug("header contains $num_fields column names
");
for ($index=0; $index name;
// echo "field_name=$field_name
";
if ($field_name == "email_breakout") { $tag_email_breakout=$index; }
if ($field_name == "verbose_email") { $tag_verbose_email=$index; }
if ($field_name == "expires") { $tag_expires=$index; }
if ($field_name == "newcard") { $tag_newcard=$index; }
Подробнее здесь: [url]https://stackoverflow.com/questions/79061771/iterating-results-from-mysqli-execute-query[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия