Я пытаюсь перейти от прямых 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; }
Для тех, кто комментирует, что это выглядит слишком сложно — это если вы ищете функцию поддержки тестовой программы. Это не так — он написан для поддержки сложной формы. Переменные публикации, полученные при отправке этой формы, показаны ниже. SQL-запрос должен быть построен на их основе, используя только те, которые выбраны по мере необходимости. Те, которые начинаются с «поиска», предназначены для части «где», те, которые начинаются с «вывода», предназначены для части выбора из, а сортировка (только одна) предназначена для упорядочивания по.
D :\VRPC-Disc\CanoeClub\websites\memberadmin_test\php\dump_input_vars.php:11:
массив (размер=36)
'button_group' => string 'find_member' (length=11)
'search_type' => string 'current' (length=7)
'find_family_option' => string 'lead_only' (length=9)
'find_surname_1' => string 'Adams' (length=5)
'find_surname_2' => string '' (length=0)
'find_forename_1' => string 'a' (length=1)
'find_forename_2' => string 'm' (length=1)
'find_specialdates' => string 'expires' (length=7)
'find_date_1' => string '01-09-2024' (length=10)
'find_date_2' => string '' (length=0)
'find_specialdates2' => string 'dob' (length=3)
'find_date_1b' => string '1-1-2000' (length=8)
'find_date_2b' => string '1-1-2008' (length=8)
'find_BC' => string '' (length=0)
'find_period_12' => string 'on' (length=2)
'find_complete_years' => string '' (length=0)
'find_address' => string '' (length=0)
'find_postcode' => string '' (length=0)
'find_email' => string '' (length=0)
'find_boat_make' => string '' (length=0)
'find_boat_model' => string '' (length=0)
'find_boat_colour' => string '' (length=0)
'find_boat_count' => string '' (length=0)
'sort_key' => string 'surname' (length=7)
'output_surname' => string 'on' (length=2)
'output_forename' => string 'on' (length=2)
'output_title' => string 'on' (length=2)
'output_member_id' => string 'on' (length=2)
'output_membership_type' => string 'on' (length=2)
'output_dob' => string 'on' (length=2)
'output_expires' => string 'on' (length=2)
'output_joined' => string 'on' (length=2)
'output_period' => string 'on' (length=2)
'button' => string ' Search ' (length=8)
'menuitem' => string 'List_Current_Members' (length=20)
'include' => string 'setup_search' (length=12)
Подробнее здесь: https://stackoverflow.com/questions/790 ... cute-query
Итерация результатов из mysqli_execute_query [закрыто] ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1728335047
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; }
Для тех, кто комментирует, что это выглядит слишком сложно — это если вы ищете функцию поддержки тестовой программы. Это не так — он написан для поддержки сложной формы. Переменные публикации, полученные при отправке этой формы, показаны ниже. SQL-запрос должен быть построен на их основе, используя только те, которые выбраны по мере необходимости. Те, которые начинаются с «поиска», предназначены для части «где», те, которые начинаются с «вывода», предназначены для части выбора из, а сортировка (только одна) предназначена для упорядочивания по.
D :\VRPC-Disc\CanoeClub\websites\memberadmin_test\php\dump_input_vars.php:11:
массив (размер=36)
'button_group' => string 'find_member' (length=11)
'search_type' => string 'current' (length=7)
'find_family_option' => string 'lead_only' (length=9)
'find_surname_1' => string 'Adams' (length=5)
'find_surname_2' => string '' (length=0)
'find_forename_1' => string 'a' (length=1)
'find_forename_2' => string 'm' (length=1)
'find_specialdates' => string 'expires' (length=7)
'find_date_1' => string '01-09-2024' (length=10)
'find_date_2' => string '' (length=0)
'find_specialdates2' => string 'dob' (length=3)
'find_date_1b' => string '1-1-2000' (length=8)
'find_date_2b' => string '1-1-2008' (length=8)
'find_BC' => string '' (length=0)
'find_period_12' => string 'on' (length=2)
'find_complete_years' => string '' (length=0)
'find_address' => string '' (length=0)
'find_postcode' => string '' (length=0)
'find_email' => string '' (length=0)
'find_boat_make' => string '' (length=0)
'find_boat_model' => string '' (length=0)
'find_boat_colour' => string '' (length=0)
'find_boat_count' => string '' (length=0)
'sort_key' => string 'surname' (length=7)
'output_surname' => string 'on' (length=2)
'output_forename' => string 'on' (length=2)
'output_title' => string 'on' (length=2)
'output_member_id' => string 'on' (length=2)
'output_membership_type' => string 'on' (length=2)
'output_dob' => string 'on' (length=2)
'output_expires' => string 'on' (length=2)
'output_joined' => string 'on' (length=2)
'output_period' => string 'on' (length=2)
'button' => string ' Search ' (length=8)
'menuitem' => string 'List_Current_Members' (length=20)
'include' => string 'setup_search' (length=12)
Подробнее здесь: [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антехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия