PHP извлекает URL из таблицы данных MySQLi - PullRequest
0 голосов
/ 22 января 2019

Я извлекаю 'name' и 'url' из базы данных (это работает), но, к сожалению, проверка связи с вытянутым 'url' не работает.

<tbody>

<?php
require_once "config/config.php";

$sql = "SELECT * FROM deployments";
if($result = mysqli_query($link, $sql)){
if(mysqli_num_rows($result) > 0){
echo "<tr>";
echo "<th>Deployment</th>";
echo "<th>URL</th>";
echo "<th>Status</th>";
echo "</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['url'] . "</td>";
if($socket =@ fsockopen($sql = "SELECT url FROM deployments", 80, $errno, $errstr)) {

echo "<td><span class='badge badge-success'>LIVE</span></td>";
fclose($socket);

}
else {

echo "<td><span class='badge badge-danger'>DOWN</span></td>";

}
echo "</tr>";
}
// Free result set
mysqli_free_result($result);
} else{
echo "No records matching your query were found.";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
?>

</tbody>

Бит значка должен показывать «LIVE», если эхо-запрос успешен, и «DOWN», если эхо-запрос невозможен.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Я извлекаю 'name' и 'url' из базы данных (это работает), но, к сожалению, проверка связи с вытянутым 'url' не работает.

Это не таксобственно, что делает этот код:

$socket =@ fsockopen($sql = "SELECT url FROM deployments", 80, $errno, $errstr)
  • Это присваивает переменной $socket результат вызова fsockopen.
  • К сожалению, кто-то положил @перед вызовом заставьте замолчать ошибку, которая выдается, потому что
  • $sql = "SELECT url FROM deployments" не делает то, что вы думаете, что он делает.Этот оператор присваивает строку SELECT url FROM deployments переменной $sql.Это все.Использование его в функции вызов фактически передает значение присваивания (истинное логическое значение в данном случае) функции.
  • Вы почти наверняка захотите передать $row['url'] функции.

Позвольте мне прояснить это: никогда не используйте @ в вашем коде. Теоретически можно было бы обосновать ошибки глушения, но на практикеЯ никогда не видел ни одного случая, чтобы программист не просто ленился и / или не понимал, что делает код.

0 голосов
/ 22 января 2019

Я вижу, что вы пытаетесь сделать, но вы просто вводите строку в функцию fsockopen, вы на самом деле не выполняете SQL в этой строке. Вы уже выполняете цикл результата того же запроса, поэтому просто выберите значение URL из строки и вставьте его в.

Изменить это:

if($socket =@ fsockopen($sql = "SELECT url FROM deployments", 80, $errno, $errstr)) {

echo "<td><span class='badge badge-success'>LIVE</span></td>";
fclose($socket);

}

К этому:

$url = $row['url'];
if($socket =@ fsockopen("'$url'", 80, $errno, $errstr)) {

echo "<td><span class='badge badge-success'>LIVE</span></td>";
fclose($socket);

}

В качестве альтернативы:

$url = "'" . $row['url'] ."'";     
if($socket =@ fsockopen($url, 80, $errno, $errstr)) {

echo "<td><span class='badge badge-success'>LIVE</span></td>";
fclose($socket);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...