MySQL — работает ли мой sql запрос с переменной или нет в php?

У меня есть следующий запрос, который работает правильно в браузере запросов:

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.

Не могли бы вы помочь мне разобраться в проблеме, пожалуйста? Спасибо всем вам !

-3

Решение

Просто, чтобы пошутить над всеми нами, попробуйте изменить свой код на это и посмотреть, работает ли он лучше, по крайней мере, он должен сообщать о любых ошибках в удобной форме.

Сначала <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.
}
}
2

Другие решения

Вам необходимо удалить все теги «br». Вы должны использовать их для отображения запроса в HTML, где они не будут отображаться. Если вы хотите выполнить запрос к базе данных, вам необходимо удалить все теги «br».

0

По вопросам рекламы [email protected]