Привет всем, у меня есть vueapp, который выполняет вызов ajax, который выглядит так:
$.ajax({
url: 'addDisplayBackend.php',
dataType: 'json',
type: 'post',
contentType: 'application/json',
dataType: 'json',
data: jsonString,
error: function(data){
alert('error');
console.info(data);
},
success: function(data){
console.info(data);
alert('success');
this.nameexists=data.nameexists;
if (this.nameexists==false){
console.info(data);
this.displays=data.displays;
this.hideAddDisplayForm();
}
}.bind(this)
});
на внутренней странице addDisplay я делаю несколько вещей, но я выбираю оператор, который выглядит следующим образом:
$selectdisplaysquery = "SELECT * FROM display WHERE userId='$userid'";
$displaysresult=mysqli_query($mysqli, $selectdisplaysquery);
while($row=mysqli_fetch_assoc($displaysresult)){
$data['displays']=$row;
}
echo json_encode($data);
Почему это не работает? Почему я не могу заставить $ data ['отображается'] вернуть массив всех объектов в базе данных? По какой-то странной причине у меня просто одна строка. Любая помощь была бы потрясающей
это мне не помогает






оставьте vueapp таким же, но измените внутреннюю страницу на
$selectdisplaysquery = "SELECT * FROM display WHERE userId='$userid'";
$displaysresult=mysqli_query($mysqli, $selectdisplaysquery);
foreach($displaysresult as $display){
$displaysarray[]=$display;
}
$data['displays']=$displaysarray;
Избил меня на 23 секунды, ха-ха
For some odd reason I just get one row.
Похоже, ваша проблема здесь:
$data['displays']=$row;
Цикл всегда заменяет ключ displays значением $row, так что в конце концов вы получите только одно значение.
Решение было бы следующим:
$data['displays'][] = $row;
Таким образом вы добавите (толкать) в конец массива.
Обязательно сначала создайте массив, например:
$data['displays'] = [];
$selectdisplaysquery = "SELECT * FROM display WHERE userId='$userid'";
$displaysresult=mysqli_query($mysqli, $selectdisplaysquery);
while($row=mysqli_fetch_assoc($displaysresult)){
$data['displays'][] = $row;
}
echo json_encode($data);
Вы также можете использовать функцию mysqli_fetch_all ().
$selectdisplaysquery = "SELECT * FROM display WHERE userId='$userid'";
$displaysresult=mysqli_query($mysqli, $selectdisplaysquery);
$data = mysqli_fetch_all($displaysresult,MYSQLI_ASSOC);
echo json_encode($data);
Если вы не знаете, как добавлять значения в массив - открыть руководство.