2015-03-15 4 views
0

Функция в этом сообщении ВОЗВРАЩАЕТ большой массив из 1 строки запроса. Но результат обеспечивает более 1 строки. Я много искал, но я не нашел ответа на свой вопрос; Как получить ARRAY для оператора SELECT, вызванного подготовленным статусом?Как получить массив из нескольких строк из подготовленного оператора

Спасибо Avance

/************************************** ************************************************** ******************************************

3. Customer view ****************************************************************************************************************** 

***********************************************************************************************************************************/ 

function customer_view($user_name) { 

    global $mysqli; 

    $query_select = ("SELECT * FROM customers where user_name = ? "); 
    $stmt = $mysqli->prepare($query_select); 
    $stmt->bind_param("s", $user_name); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $count = $stmt->num_rows(); 

    $stmt->bind_result ($customer_number   , 
         $user_name    , 
         $customer_name    , 
         $customer_legal_sort  , 
         $customer_vat_applicable , 
         $customer_payment_terms , 
         $customer_contactperson , 
         $customer_email   , 
         $customer_telphone  , 
         $customer_address_visit , 
         $customer_number_visit , 
         $customer_num_add_visit , 
         $customer_postal_visit , 
         $customer_city_visit  , 
         $customer_country_visit , 
         $customer_visit_vs_post , 
         $customer_address_post  , 
         $customer_number_post  , 
         $customer_num_add_post  , 
         $customer_postal_post , 
         $customer_city_post  , 
         $customer_country_post ); 


     $stmt->fetch(); 


     $customer_data = array ('customer_number'  =>$customer_number   , 
           'user_name'    =>$user_name    , 
           'customer_name'   =>$customer_name     , 
           'customer_legal_sort' =>$customer_legal_sort  , 
           'customer_vat_applicable'=>$customer_vat_applicable , 
           'customer_payment_terms '=>$customer_payment_terms , 
           'customer_contactperson' =>$customer_contactperson , 
           'customer_email'   =>$customer_email   , 
           'customer_telphone'  =>$customer_telphone   , 
           'customer_address_visit' =>$customer_address_visit , 
           'customer_number_visit' =>$customer_number_visit  , 
           'customer_num_add_visit' =>$customer_num_add_visit , 
           'customer_postal_visit' =>$customer_postal_visit , 
           'customer_city_visit' =>$customer_city_visit  , 
           'customer_country_visit' =>$customer_country_visit , 
           'customer_visit_vs_post' =>$customer_visit_vs_post , 
           'customer_address_post' =>$customer_address_post  , 
           'customer_number_post' =>$customer_number_post , 
           'customer_num_add_post' =>$customer_num_add_post  , 
           'customer_postal_post' =>$customer_postal_post , 
           'customer_city_post'  =>$customer_city_post  , 
           'customer_country_post' =>$customer_country_post ); 


    return $customer_data; 

} //end of customer_view() function 
+0

Это потому, что вы получаете только 1 строку. Вы также должны прокручивать другие строки. Слишком устал писать любой код, так что не просто комментарий. –

+0

# Давид: Обычный, это воскресный вечер (время в Амстердаме). У вас должно быть немного свободного времени, чтобы помочь этому начинающему студенту PHP немного дальше. Я обещаю, что цифровое пиво станет вашей наградой ;-) –

+1

В приведенном выше выборе вы выбираете определенное имя пользователя. Уверены ли вы, что для этого совпадения возвращено несколько имен пользователей? Furthemore, вы бы использовали 'while ($ row = $ stmt-> fetch_assoc()) {// $ row теперь содержит каждую строку, возвращаемую из db}' вместо '$ stmt-> fetch();' – Ohgodwhy

ответ

1

Если вы хотите перебрать возвращенный результирующий набор, просто сделайте следующее:

while($row = $stmt->fetch()){ 
    $customer_data[] = array ('customer_number'  =>$customer_number   , 
          'user_name'    =>$user_name    , 
          'customer_name'   =>$customer_name     , 
          'customer_legal_sort' =>$customer_legal_sort  , 
          'customer_vat_applicable'=>$customer_vat_applicable , 
          'customer_payment_terms '=>$customer_payment_terms , 
          'customer_contactperson' =>$customer_contactperson , 
          'customer_email'   =>$customer_email   , 
          'customer_telphone'  =>$customer_telphone   , 
          'customer_address_visit' =>$customer_address_visit , 
          'customer_number_visit' =>$customer_number_visit  , 
          'customer_num_add_visit' =>$customer_num_add_visit , 
          'customer_postal_visit' =>$customer_postal_visit , 
          'customer_city_visit' =>$customer_city_visit  , 
          'customer_country_visit' =>$customer_country_visit , 
          'customer_visit_vs_post' =>$customer_visit_vs_post , 
          'customer_address_post' =>$customer_address_post  , 
          'customer_number_post' =>$customer_number_post , 
          'customer_num_add_post' =>$customer_num_add_post  , 
          'customer_postal_post' =>$customer_postal_post , 
          'customer_city_post'  =>$customer_city_post  , 
          'customer_country_post' =>$customer_country_post ); 
} 

Обратите внимание, что $customer_data[] было изменено. Мы добавляем индекс автоинкремент в массив. таким образом - у вас будет смешанный массив со значениями из каждой строки.

+0

Это не работает, потому что я работаю с готовыми утверждениями. Это ошибка, которую я получаю при использовании вашего предложения: Неустранимая ошибка: вызов неопределенного метода mysqli_stmt :: fetch_assoc() в /mnt/webr/c3/htdocs/includes/functions.php в строке 333 –

+0

он работал, когда я удалил _assoc(). БЛАГОДАРЯ! –

Смежные вопросы