SQL Query验证网站链接

时间:2017-02-27 21:03:38

标签: sql sql-server

我有一个SQL表,其中一列有各种url链接。有谁知道查询/功能/等。这将遍历每一行并验证或验证链接是否仍然有效。我有一些问题,我桌子上的一些网址仍然有效,其他人给我404.

2 个答案:

答案 0 :(得分:2)

这不能仅仅通过SQL完成,但可以使用脚本完成(我建议将其作为例行服务)。以下用作mysql + php示例。请记住,这不是生产代码,我写得非常快,只是为了让您了解如何实现这一目标。

<?php
    /* Database Connection Config */
    $db_host        =   '127.0.0.1';
    $db_user        =   'your_username';
    $db_password    =   'your_password';
    $db             =   'your_database';

    $conn = new PDO("mysql:host=$db_host;dbname=$db",$db_user,$db_password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    /* Pull all URLS in table. */
    $query = 'SELECT url_id, url FROM url_table';
    $stmt = $conn->prepare($query);
    $stmt->execute();
    $rc = $stmt->rowCount();
    if($rc > 0) {
        while($row = $stmt->fetch()) {
            /* If url returns 404. */
            if(!is_url_valid($url)) {
                delete_url($row['url_id']);
            }
        }
    }

    function delete_url($url_id) {
        global $conn;
        $query = 'DELETE from url_table WHERE url_id = '.$url_id;
        $stmt = $conn->prepare($query);
        $stmt->execute();
        $rc = $stmt->rowCount();
        return $rc;
    }

    /* Returns true/false */
    function is_url_valid($url) {
        $handle = curl_init($url);
        curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);
        $response = curl_exec($handle);
        $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
        if($httpCode == 404) {
            $status = false;
        } else {
            $status = true;
        }
        curl_close($handle);
        return $status;
    }
?>

答案 1 :(得分:0)

我不会使用SQL Server;我会使用Excel&amp; VBA。

函数DoesHTTPFileExist(ByVal inlink As String)作为布尔值     On Error Resume Next     ThisWorkbook.FollowHyperlink(inlink)     DoesHTTPFileExist = Err.Number = 0 结束功能

enter image description here