php mysql: выбрать из базы данных и заполнить форму

Я хотел бы заполнить адреса для клиента из моего db. Я использую этот код для выбора из db:

$stmt = $conn->prepare("SELECT * FROM peopleaddress WHERE peopleID=?"); if ( !$stmt ) {die(printf("Error: %s.\n", mysqli_stmt_error($stmt) ) );} else if ( !$stmt->bind_param('i', $peopleID ) ) {die(printf("Error: %s.\n", mysqli_stmt_error($stmt) ) );} else if ( !$stmt->execute() ) { die(printf("Error: %s.\n", mysqli_stmt_error($stmt) ) ); } else { $result = $stmt->get_result(); while($row = $result->fetch_assoc()) { $addressID_array = array ($row['addressID']); $addresstype_array = array ($row['addresstype']); $addressactive_array = array ($row['active']); $street_array = array ($row['street']); $city_array = array ($row['city']); $town_array = array ($row['town']); $state_array = array ($row['state']); $zip_array = array ($row['zip']); $country_array = array ($row['country']); $latitude_array = array ($row['latitude']); $longitude_array = array ($row['longitude']); } } /* end else */ 

и этот код для отображения формы:

  <?php for ($i = 0; $i < count($addressID_array); $i++) { echo '<input type="text" name="street[]" id="" placeholder="street" value="'; if (isset ($street_array[$i])){echo $street_array[$i];} echo '" />'; echo '<input type="text" name="city[]" id="city" placeholder="city" value="'; if (isset ($city_array[$i])){echo $city_array[$i]; } echo '" />'; echo '<input type="text" name="zip[]" id="zip" placeholder="postalcode" value="'; if (isset ($zip_array[$i])){echo $zip_array[$i]; } echo '" />'; echo '<input type="text" name="town[]" id="town" placeholder="town" value="'; if (isset ($town_array[$i])){echo $town_array[$i]; } echo '" />'; echo '<input type="text" name="state[]" id="state" value="'; if (isset ($state_array[$i])){echo $state_array[$i];} echo '" />'; echo '<input type="text" name="country[]" id="country" value="'; if (isset ($country_array[$i])) {echo $country_array[$i];} echo '" />'; echo '<input type="text" name="addresstype[]" id="" value="'; if (isset ($addresstype_array[$i])) {echo $addresstype_array[$i];} echo '" />'; echo '<input type="text" name="addressactive[]" id="" value="'; if (isset ($addressactive_array[$i])) {echo $addressactive_array[$i];} echo '" />'; echo '<input type="text" name="latitude[]" id="latitude" READONLY value="'; if (isset ($latitude_array[$i])) {echo $latitude_array[$i];} echo '" />'; echo '<input type="text" name="longitude[]" id="longitude" READONLY value="'; if (isset ($longitude_array[$i])) {echo $longitude_array[$i];} echo '" /> <br>'; } ?> 

Проблемы: 1) он отображает только один адрес, даже если в db есть 2 адреса для одного и того же клиента.

2) Я довольно новичок в этом. Я делаю это правильно или есть самый быстрый (меньше кода) вариант для этого? Благодаря!!

    Проблема в вашем цикле while:

     $addressID_array = array ($row['addressID']); 

    Это присваивает новый массив каждый раз, когда циклы while переходят к переменным. Эти строки назначения должны быть изменены как

     $addressID_array[] = $row['addressID']; 

    Что касается вашего второго вопроса: он не несет ответственности, потому что мы не знаем требований, с которыми вам нужно работать.

    Выезд: https://en.wikipedia.org/wiki/SQL_injection

    Посмотрите вниз на часть «шестнадцатеричное преобразование». Я поставил короткую функцию для выполнения команд SQL. Когда вы получите информацию обратно, она будет в массиве. Поэтому, если вы использовали $ row, чтобы вернуть информацию, она будет находиться в $ row [0] [<Fields>], $ row [1] [<Fields>] и так далее.

    Проблема с вышесказанным заключается в том, что каждый раз, когда вы делаете «array ()», он создает новый массив. Так что он вытирает то, что у вас было там раньше. 🙂

    Вы переписываете значения в своем массиве, делая это

     $addressID_array = array ($row['addressID']); 

    вместо

     $addressID_array[] = $row['addressID']; 

    Обновление. Кроме того, было бы неплохо перебирать ваши данные вместо того, чтобы создавать массив данных, а затем снова считывать этот массив. Использовать это:

     else { $result = $stmt->get_result(); } // Then in display while($row = $result->fetch_assoc()) { echo '<input type="text" name="street[]" id="" placeholder="street" value="'; if (isset ($row['street'])){echo $row['street'];} echo '" />'; }