簡體   English   中英

PHP 從 MySQLi 數據表中提取 URL

[英]PHP pulls URL from MySQLi data table

我正在從數據庫中提取“名稱”和“網址”(這有效),但不幸的是,ping 提取的“網址”不起作用。

<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>

如果 ping 成功,標志位應顯示“LIVE”,如果無法執行 ping 操作,則標志位應顯示“DOWN”。

我明白你在做什么,但你只是在 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);

}

我正在從數據庫中提取“名稱”和“網址”(這有效),但不幸的是,ping 提取的“網址”不起作用。

這實際上不是這段代碼在做什么:

$socket =@ fsockopen($sql = "SELECT url FROM deployments", 80, $errno, $errstr)
  • 這將fsockopen調用的結果分配給$socket變量。
  • 可悲的是,有人在調用之前放了一個@ ,使拋出的錯誤靜音,因為
  • $sql = "SELECT url FROM deployments"沒有做你認為的那樣。 該語句將字符串SELECT url FROM deployments分配給變量$sql 就這些。 在函數調用中使用它實際上將賦值的值(在這種情況下為真正的布爾值)傳遞給函數。
  • 您幾乎肯定希望將$row['url']傳遞給該函數。

讓我明確一點:永遠不要在你的代碼中使用@。 從理論上講,人們可以為消除錯誤提供理由,但在實踐中,我從未見過一個案例,這不僅僅是程序員懶惰和/或不了解代碼的作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM