У меня есть следующий запрос, который работает правильно в браузере запросов:
select x.row_num as pos_id,x.childID,x.parentID from
(SELECT @row_number:=CASE
WHEN @childID = childID THEN @row_number + 1
ELSE 1
END AS row_num, @childID :=childID as childID,parentID
FROM map_edge JOIN (select @row_number := 0) r ORDER BY childID) x where x.row_num >1;
с помощью этого запроса я получил следующий результат в браузере запросов:
pos_id childID parentID
2 3 26
3 3 24
4 3 21
Чтобы получить значения запроса по php, поэтому я изменил код php на основе предложений, изменились следующие коды:
$link = mysqli_connect("localhost","root","","localhost")
or die("Error " . mysqli_error($link));
$sql = "SELECT x.row_num as pos_id,x.childID,x.parentID FROM
(
SELECT @row_number:=CASE
WHEN @childID = childID THEN @row_number + 1
ELSE 1
END AS row_num, @childID :=childID as childID,parentID
FROM map_edge
JOIN (select @row_number := 0) r
ORDER BY childID
) x
WHERE x.row_num > 1";
$result=mysqli_query($link,$sql);
if (! $result) {
echo mysqli_error($link);
exit;
}
while ($row = mysqli_fetch_row($result)) {
foreach($row as $field) {
echo $field .'<br>';
}
}
Но запрос не показал ни сообщения, ни результатов. Я путаю, что запрос с переменной работает или нет в php.
Не могли бы вы помочь мне разобраться в проблеме, пожалуйста? Спасибо всем вам !
Просто, чтобы пошутить над всеми нами, попробуйте изменить свой код на это и посмотреть, работает ли он лучше, по крайней мере, он должен сообщать о любых ошибках в удобной форме.
Сначала <br>
следует удалить, а во-вторых, нет необходимости разбивать каждую строку на собственную строку и объединять их в конце. Это само по себе, вероятно, вызывает путаницу, если не ошибки.
$link = mysqli_connect("localhost","root","","localhost")
or die("Error " . mysqli_error($link));
$sql = "SELECT x.row_num as pos_id,x.childID,x.parentID FROM
(
SELECT @row_number:=CASE
WHEN @childID = childID THEN @row_number + 1
ELSE 1
END AS row_num, @childID :=childID as childID,parentID
FROM map_edge
JOIN (select @row_number := 0) r
ORDER BY childID
) x
WHERE x.row_num > 1";
$result=mysqli_query($link,$sql);
if (! $result) {
echo mysqli_error($link);
exit;
}
// see if we got any results from the query
echo 'Query returned ' . mysqli_num_rows($result) . ' rows';
while ($row = mysqli_fetch_row($result)) {
foreach($row as $field) {
echo $field .'<br>'; // this <br> is ok.
}
}
Вам необходимо удалить все теги «br». Вы должны использовать их для отображения запроса в HTML, где они не будут отображаться. Если вы хотите выполнить запрос к базе данных, вам необходимо удалить все теги «br».