Итерация результатов из mysqli_execute_query [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Итерация результатов из mysqli_execute_query [закрыто]

Сообщение 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)


Подробнее здесь: https://stackoverflow.com/questions/790 ... cute-query
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»