2017-02-27 15 views
0

私は様々なURLリンクを持つ列を持つSQLテーブルを持っています。誰でもクエリ/関数/ etcを知っていますか?各行をループし、リンクが有効かどうかを検証したり、検証したりします。私はいくつかの問題を抱えています。私のテーブル内のいくつかのURLはまだ動作していますが、他の人は私に404を与えています。SQL照会Webサイトのリンク

+0

を再開ノーあると思いますそのような機能は(データベースの目的ではない)、どのデータベースでも利用可能です。おそらくスクリプトやアプリケーションをjavaやc#などの言語で作成してデータベースからデータを取得してチェックすることができます。 – GurV

+0

もう少しコンテキストを提供できますか?あなたは働くURLだけでテーブルを最新に保つ方法が必要ですか? (その場合、設定された間隔でそれらをすべてチェックし、動作していないものを取り除くcronjobスクリプトを使用してください。) – Philip

+0

@Phillip私のテーブル内のURLがまだ良好かどうかを確認する方法を探しています。私のテーブルにはURLという名前の列があり、その中に約2kのレコードがあります。私はそれにSQLの中に何かがあるとは思わなかったが、PHPやJavaのソリューションを見る前に尋ねたいと思った。 – GabrielVa

答えて

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; 
    } 
?> 
0

私はこれにSQL Serverを使用しません。私はExcel & VBAを使用します。エラー時にブール として

機能DoesHTTPFileExist(ByValのインリンク文字列として)次 ThisWorkbook.FollowHyperlink(インリンク) DoesHTTPFileExist = Err.Numberに= 0 エンド機能

enter image description here