Я извлекал данные из MySQL динамически, используя раскрывающееся меню через Ajax, что было успешным, но когда я повторяю значения массива, вместо того, чтобы давать мне список электронных писем, он показывал только символы.
Взгляните на изображение ниже:

Из списка рассылки это символы, которые были выведены эхом.
вот мой код php
if (isset($_POST["confirm_no"])){
$d = $_POST['confirm_no'];
$query = mysqli_query($mysqli, "select * from jobseeker WHERE confirm_no LIKE '$d%'");
//Display list
if (mysqli_num_rows($query) > 0){
$row = mysqli_fetch_array($query);
foreach ($row as $r) {
$emailArr[] = $r["mails"];
}
$emails = implode(";", $emailArr);
echo $emails;
}else{
echo 'No email for this selection.';
}
}
И jQuery
$(document).ready(function(){
$('#smode').change(function(){
var confirm_no = $(this).val();
$.ajax({
type:'POST',
data:"confirm_no = "+confirm_no,
url:'get_email.php',
success:function(data){
$('#emaillist').val(data);
}
});
});
});
Почему он повторяет эти символы?






Вы неправильно загружаете данные, вы выбираете только одну строку (вызов mysqli_fetch_array()
$row = mysqli_fetch_array($query);
foreach ($row as $r) {
$emailArr[] = $r["mails"];
}
Можно было бы лучше написать как
while( $row = mysqli_fetch_assoc($query)) {
$emailArr[] = $row["mails"];
}
Или же...
$emailArr = mysqli_fetch_all($query, MYSQLI_ASSOC);
$emailArr = array_column($emailArr, "mails");
Перестройте свой код как:
//Display list
if (mysqli_num_rows($query) > 0){
// You have many results - fetch them all iteratively
// use `fetch_assoc` to have ability to use `mails`
while ($row = mysqli_fetch_assoc($query)) {
$emailArr[] = $row["mails"];
}
$emails = implode(";", $emailArr);
echo $emails;
}else{
echo 'No email for this selection.';
}
Спасибо, ребята, за вашу помощь.
mysqli_fetch_arrayвыбирает массив с нулевым индексом, а не ассоциативный.