Один из способов сделать это - вернуть статус «успешно» в ваш JSON. Затем вы можете проверить это на стороне клиента и предупредить сообщение при необходимости. Таким образом, вы можете изменить свой код следующим образом:
PHP
if ($numrows > 0 ) {
$info_arr['data'] = array();
while ($rows = mysqli_fetch_assoc($result)) {
$fullname = $rows['fullname'];
$address = $rows['address'];
$info_arr['data'][] = array("fullname" => $fullname, "address" => $address);
}
$info_arr['success'] = true;
}
else {
$info_arr = array('success' => false);
}
echo json_encode($info_arr);
exit;
jQuery:
success: function(data) {
if (data.success) {
var fullname = data.data[0]['fullname'];
var address = data.data[0]['address'];
document.getElementById('fullname').value = fullname;
document.getElementById('address').value = address;
}
else {
document.getElementById('fullname').value = '';
document.getElementById('address').value = '';
alert('Unable to find the information');
}
}
SQL является основанным на наборе, декларативным языком; не процедурный или императивный язык. T-SQL пытается колебаться между этими двумя, но он все еще основывался на существенно основанной на наборе парадигме.
Поскольку SQL является основанным на наборе языком. Питание sql находится в находке меньшая группа в более многочисленной группе данных на основе определенных характеристик. Для справлений с этой задачей цикличное выполнение является в основном ненужным. Очевидно, это было добавлено для удобства обработки некоторых ситуаций, но надлежащее использование языка делает эту функцию не важной.
Я могу думать о тонне причин, которые я хотел бы проанализировать через набор результата запроса и сделать что-то, что просто не может быть сделано без цикла
И для подавляющего большинства тех я могу или показать Вам, как сделать это в основанной на наборе операции вместо этого или объяснить, почему это должно быть сделано в Вашем клиентском коде, а не на базе данных. При необходимости сделать цикл в sql превышает редкий.
T-SQL не разработан, чтобы быть императивным языком. Его разработанный для описания. Его декларативный характер позволяет optomizer нарезать различные задачи и выполнять их в параллели, и другими способами делают вещи в порядке, который является самым эффективным.
это зависит, что Вы хотите сделать в цикле. использование некоторое время цикл не является трудным вообще:
declare @i int
set @i = 20
while @i>0 begin
... do some stuff
set @i = @i-1
end
это только становится громоздким при использовании курсоров, которых нужно избежать так или иначе.
Я не эксперт в DB, но я полагаю, что атомарная природа транзакций базы данных сделала бы циклы трудными достигнуть, потому что транзакция быть завершенным или это не должно происходить вообще. Поддержание состояния может быть противным!
Вы могли бы попытаться использовать определяемые пользователем функции, чтобы сделать большую часть работы вместо того, чтобы проявить основанный на цикле подход. Это сохранило бы намерение языка SQL, который установлен базирующийся.
почти все может быть сделано базирующийся набор, попытаться использовать таблицу числа
почему 20 строк? Это - все, в чем Вы нуждаетесь
select *,identity(int, 1,1) as Someid into #temp
from sysobjects
declare @id int, @MaxId int
select @id = 1,@MaxId = max(Someid) from #temp
while @id < @MaxId
begin
-- do your stuff here
print @id
set @id =@id + 1
end
SQL является основанной на наборе системой, не процедурным (цикл) один. Обычно его рассматриваемый как плохая практика для использования циклов в SQL, потому что они работают плохо по сравнению с их основанными на наборе эквивалентами.
В ТО ВРЕМЯ КАК наиболее распространенная структура цикличного выполнения, КУРСОРЫ могут также использоваться, но иметь свои собственные проблемы (упущение освободить / близко)
... пример того, В ТО ВРЕМЯ КАК (Вам, возможно, не понадобится он, но другие, может),
DECLARE @iterator INT
SET @iterator = 0
WHILE @iterator < 20
BEGIN
SELECT * FROM table WHERE rowKey = @iterator
/*do stuff*/
@iterator = @iterator + 1
END
Реальный вопрос, "Что Вы пытаетесь сделать, это просто не может быть сделано основанным на наборе способом?"