2012-12-21 30 views
-1

我的問題是:我想在數據庫中添加多行(每個網站的不同行上的pagerank都不像第一張圖中的所有行一樣)! 我不知道該怎麼做,我嘗試了explode,但只適用於從瀏覽器打印表格,但現在用於數據庫中的鏈接!請幫幫我!PHP在數據庫中分解和添加數據

在我的數據庫: enter image description here

在我的瀏覽器:

enter image description here

我的整個代碼:

<?php 
error_reporting(E_ALL & ~E_NOTICE); 
function StrToNum($Str, $Check, $Magic) 
{ 
    $Int32Unit = 4294967296; // 2^32 

    $length = strlen($Str); 
    for ($i = 0; $i < $length; $i++) { 
     $Check *= $Magic;  
     if ($Check >= $Int32Unit) { 
      $Check = ($Check - $Int32Unit * (int) ($Check/$Int32Unit)); 

      $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check; 
     } 
     $Check += ord($Str{$i}); 
    } 
    return $Check; 
} 
function CheckHash($Hashnum) 
{ 
    $CheckByte = 0; 
    $Flag = 0; 

    $HashStr = sprintf('%u', $Hashnum) ; 
    $length = strlen($HashStr); 

    for ($i = $length - 1; $i >= 0; $i --) { 
     $Re = $HashStr{$i}; 
     if (1 === ($Flag % 2)) {    
      $Re += $Re;  
      $Re = (int)($Re/10) + ($Re % 10); 
     } 
     $CheckByte += $Re; 
     $Flag ++;  
    } 

    $CheckByte %= 10; 
    if (0 !== $CheckByte) { 
     $CheckByte = 10 - $CheckByte; 
     if (1 === ($Flag % 2)) { 
      if (1 === ($CheckByte % 2)) { 
       $CheckByte += 9; 
      } 
      $CheckByte >>= 1; 
     } 
    } 

    return '7'.$CheckByte.$HashStr; 
} 
function HashURL($String) 
{ 
    $Check1 = StrToNum($String, 0x1505, 0x21); 
    $Check2 = StrToNum($String, 0, 0x1003F); 

    $Check1 >>= 2;  
    $Check1 = (($Check1 >> 4) & 0x3FFFFC0) | ($Check1 & 0x3F); 
    $Check1 = (($Check1 >> 4) & 0x3FFC00) | ($Check1 & 0x3FF); 
    $Check1 = (($Check1 >> 4) & 0x3C000) | ($Check1 & 0x3FFF);  

    $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2) | ($Check2 & 0xF0F); 
    $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000); 

    return ($T1 | $T2); 
} 
function getpagerank($url) { 
    $query="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".CheckHash(HashURL($url)). "&features=Rank&q=info:".$url; 
    set_time_limit(0); 
    $data=file_get_contents($query); 
    $pos = strpos($data, "Rank_"); 
    if($pos === false){} else{ 
     $pagerank = substr($data, $pos + 9); 
     return $pagerank; 
    } 
} 
if($_POST['urls']) 
{ 
    ?><table border="1"> 
    <th>URL</th> 
    <th>Pagerank</th> 
    <? 
    $urls=trim($_POST['urls']); 
    $url=explode("\n",$urls); 
    foreach($url as $url) 
    { 
     if($url) 
     { 
      $url=trim($url); 
      $pagerank=getpagerank($url); 
      ?> 
      <tr><td><?php echo $url; ?></td><td><?php echo $pagerank; ?></td></tr> 
      <?  
      //mysql_query("INSERT INTO projects2 (googlePR, Link) 
      //VALUES ('".$pagerank."','".$urls."') ") or die(mysql_error());   
      flush(); 
     }    
    } 
    ?></table><? 
} 
else 
{ 
    ?><form action="" method="post"> 
    URLS:<br /><textarea name="urls" cols="50" rows="10">Introduceti lista de linkuri aici</textarea><br /><input type="submit" value="Check PR & insert values"/> 
    </form> 
    <? 
} 
?> 

<?php 
    $urls=trim($_POST['urls']); 
    $url=explode("\n",$urls); 
    foreach($url as $url) { 
    if($url) 
    { 
    $url=trim($url); 
    $pagerank=getpagerank($url); 

    mysql_query("INSERT INTO projects2 (googlePR, Link) 
    VALUES ('".$pagerank."','".$urls."') ") or die(mysql_error()); 
    } 
} 
?> 
+0

請縮小你的問題。閱讀所有源代碼並理解您的實際問題是非常困難的。 –

回答

1

的問題是在你的foreach語句喲uare寫作:

foreach($url as $url) { 

將與數組的第一個值覆蓋你的$網址陣列自變量名是相同的。然後在循環結束時,當它嘗試迭代到下一行時,它將對非數組對象進行迭代。只是也許改變數組的名字從德創造爆炸到$url_array或類似的東西,做

foreach($url_array as $url) { 
0

因爲我修改了 我與$url取代$urls你的回答是對了一半:

mysql_query("INSERT INTO projects2 (googlePR, Link) 
    VALUES ('".$pagerank."','".$url."') ") 

現在一切順利