За последние 24 часа нас посетили 18168 программистов и 1650 роботов. Сейчас ищут 1530 программистов ...

Получение массива данных в MYSQLi подготовительные выражения

Тема в разделе "PHP и базы данных", создана пользователем pavluxa09, 12 июл 2010.

  1. pavluxa09

    pavluxa09 Активный пользователь

    С нами с:
    17 июл 2009
    Сообщения:
    9
    Симпатии:
    0
    Здравствуйте. Работаю со стандартным классом mysqli. После выполнения подготовительного выражения есть метод bind_result, который принимает неограниченное количество ссылок на переменные в которые будут записаны результаты, дело в том, что мне нужно получить массив, в котором ключем будет название поля, а значением значение поля. Если использовать этот bind_result то не удобно, так как я не знаю сколько в таблице полей, следовательно не знаю скоко нада туда передавать переменных.

    Если не использовать подготовительне выражения, а тупо сразу метод query, то там есть метод fetch_assoc, который возвращает такой массив, очень удобно, но почему же его нет в подготовительных выражениях? Как можно выполнить мою задачу?
    Заранее спасибо за ответы...
     
  2. pavluxa09

    pavluxa09 Активный пользователь

    С нами с:
    17 июл 2009
    Сообщения:
    9
    Симпатии:
    0
    Ответ на данный вопрос кроется в глубине человеческой души...
    Код (Text):
    1.  
    2. function Search( $RequestID )
    3. {
    4.         global $mysqli;
    5.  
    6.           $sql = "SELECT * FROM `ex_requests` WHERE `ID` = ?";
    7.           $stmt = $mysqli->stmt_init();
    8.           if( $result = $stmt->prepare( $sql ) )
    9.           {
    10.             $stmt->bind_param( "d",$RequestID );
    11.             $stmt->execute();
    12.             $result = $stmt->result_metadata();
    13.             $fields = $result->fetch_fields();
    14.  
    15.             $res_arr = array();   $list = array();
    16.             foreach($fields as $f)
    17.                     $list[] = &$res_arr[$f->name];
    18.             if(!call_user_func_array(array($stmt, 'bind_result'), $list))
    19.                     return "bind result error: ".$stmt->error;
    20.  
    21.             $f = $stmt->fetch();
    22.             if($f === false)
    23.               return "fetch error: ".$stmt->error;
    24.             if($f === null)
    25.               return null;
    26.             return $res_arr;
    27.         }
    28.         return mysqli_error($mysqli);
    29. }
    30.  
    31. var_dump( Search( 1 ) );  
    Код (Text):
    1.  
    2. array(13) {
    3.   ["ID"]=>
    4.   int(1)
    5.   ["CreateDate"]=>
    6.   string(19) "2010-07-11 09:38:38"
    7.   ["UpdateDate"]=>
    8.   string(19) "2010-07-11 09:38:40"
    9.   ["FromCurrency"]=>
    10.   string(3) "WMZ"
    11.   ["ToCurrency"]=>
    12.   string(3) "WMR"
    13.   ["FromAmount"]=>
    14.   float(10)
    15.   ["ToAmount"]=>
    16.   float(500)
    17.   ["CustomerWMID"]=>
    18.   string(12) "000000000000"
    19.   ["CustomerEmail"]=>
    20.   string(12) "444@gmail.ru"
    21.   ["FromPurse"]=>
    22.   string(13) "Z000000000000"
    23.   ["ToPurse"]=>
    24.   string(13) "R000000000000"
    25.   ["X2Retval"]=>
    26.   int(0)
    27.   ["Status"]=>
    28.