Intereting Posts
Ошибка сайта Codeigniter 404 / .htaccess Лучшая сетка данных для php-приложения с использованием ajax Проверьте, нравится ли пользователю фан-страница Возможные значения возврата для mysql_affected_rows () Кратчайшая возможная кодированная строка с возможностью декодирования (сокращать URL) с использованием только PHP Docx в pdf с использованием openoffice безголовым способом слишком медленным Проблема DOMDocument :: validate () CakePHP Auth loginRedirect error / always redirect to 'users / login', тогда как я устанавливаю другой контроллер PHPMailer, отправляющий на несколько адресов, разделенных символом a, Хранение переменной php $ _GET в переменной javascript? Оператор MySQL SELECT: как получить один точный результат строки из похожих строк? Список разделенных запятыми из массива с «и» перед последним элементом Почему $ _SERVER всегда GET? Использование PHP для вызова веб-службы WCF с несколькими привязками Как генерировать json-ответ, используя php

mysqli fetch array отображает только первую строку

Я написал этот код:

require("config.php"); $rows = array(); $query = "SELECT accountname, bill_city, bill_code, bill_country, bill_street, latitude, longitude, setype FROM vtiger_accountbillads, vtiger_account, vtiger_geocoding WHERE accountaddressid = accountid AND accountid = crmid"; $result = mysqli_query($connection, $query); $rows_number = $result->num_rows; echo $rows_number . "<br/><br/>"; $row = mysqli_fetch_array($result); if($result->num_rows > 0){ for($i=0; $i < $rows_number; $i++) { $rows[] = array("name" => $row[0], "city" => $row[1], "code" => $row[2], "country" => $row[3], "street" => $row[4], "latitude" => $row[5], "longitude" => $row[6], "type" => $row[7]); } } $json = json_encode($rows); print $json; mysqli_free_result($row); mysqli_close($connection); 

Я пытаюсь получить несколько данных, используя запрос, написанный в приведенном выше коде, но он отображает первую строку 47 раз. Зачем? Что я делаю не так? Благодаря!

Вам нужно выполнить итерацию по набору результатов, возвращаемому MySQL. Это означает вызов mysqli_fetch_array() для каждой строки этого набора результатов. Вы можете сделать это, используя цикл while:

 while($row = mysqli_fetch_assoc($result)) { $rows[] = array("name" => $row['name'], "city" => $row['bill_city'], "code" => $row['bill_code'], "country" => $row['bill_country'], "street" => $row['bill_street'], "latitude" => $row['latitude'], "longitude" => $row['longitude'], "type" => $row['setype']); } } 

Не используйте для loop для выборки SQL-запросов. Вместо этого используйте:

 if($result->num_rows > 0){ while($row = mysqli_fetch_assoc($result)) { $rows[] = array("name" => $row[0], "city" => $row[1], "code" => $row[2], "country" => $row[3], "street" => $row[4], "latitude" => $row[5], "longitude" => $row[6], "type" => $row[7]); } }