2017-02-12 160 views
0

所以我一直試圖排除這個問題了一段時間,但一直無法弄清楚,如果我必須通過SQL端或PHP端做到這一點。PHP檢查字符串是否在表

我的代碼至今:

<?php 
$servername=""; 
$username = ""; 
$password = ""; 
$dbname = "alphacre_kingsland";  


$conn = mysqli_connect($servername, $username, $password, $dbname); 
    if (!$conn) { 
      die("Connection failed: " . mysqli_connect_error()); 
    } 

    $sql = "SELECT * FROM `bm_player_bans` ORDER BY id"; 
    $result = mysqli_query($conn, $sql); 

    if (mysqli_num_rows($result)>0){ 
     while($row = mysqli_fetch_assoc($result)){ 
      $playerId = bin2hex($row['player_id']); 
      $storedname= getPlayerName($playerId); 
      $sql = "INSERT INTO bm_onlinedata (uuid, playername) VALUES ('".$playerId."', '".$storedname."')"; 

      if ($conn->query($sql) === TRUE) { 
       echo "New record created successfully"; 
       } else { 
        echo "Error: " . $sql . "<br>" . $conn->error; 
       } 
      } 
    }else{ 
     echo "0 results"; 
    } 

      mysqli_close($conn); 

    function getPlayerName($uuid){ 
     $json_response = file_get_contents("https://sessionserver.mojang.com/session/minecraft/profile/".$uuid); 
     $data = json_decode($json_response); 
     return $data->name; 
    } 

>

所以這店 「UUID」 和playername到一個單獨的表。但是我想檢查在添加新UUID之前UUID是否已經在那裏。基本更新它。 這是因爲玩家名稱可以更改。而且我不想要多行相同的數據。但是那只是如果它的存在。

背景信息: 我正在通過Mojangs API從用戶那裏獲取用戶名,它只允許每分鐘查找一次該UUID。所以我想要每5分鐘獲取一次數據,使用運行這個腳本的計劃任務並將其存儲在一個表中。

+0

檢查你需要一個'WHERE'條款,以增加'SELECT'爲'num_rows'工作。 –

+0

您可以使用'INSERT .. ON DUPLICATE KEY UPDATE ..'語法。 –

回答

1

您可以輕鬆地選擇

$sql = "SELECT * FROM `bm_player_bans` ORDER BY id"; 
$result = mysqli_query($conn, $sql); 

if (mysqli_num_rows($result)>0){ 
    while($row = mysqli_fetch_assoc($result)){ 
     $playerId = bin2hex($row['player_id']); 
     $storedname= getPlayerName($playerId); 
     $sql = "SELECT * FROM `bm_onlinedata` where uuid = '" . $playerId ."';"; 
     $result = mysqli_query($link, $sql); 
     $num_rows = mysqli_num_rows($result); 
     if ($num_rows> 0) { 
      $sql = "UPDATE bm_onlinedata 
        set playername = '". $storedname."' 
        where uuid = '" .$playerId ."';"; )"; 
     } else { 
     $sql = "INSERT INTO bm_onlinedata (uuid, playername) VALUES ('".$playerId."', '".$storedname."')"; 

      if ($conn->query($sql) === TRUE) { 
       echo "New record created successfully"; 
       } else { 
        echo "Error: " . $sql . "<br>" . $conn->error; 
       } 
     } 
    } 
}else{ 
    echo "0 results"; 
} 
+0

你的「and」在某處的使用似乎有問題,我會看看我是否可以把它整理出來 – DarkEyeDragon

+0

@DarkEyeDragon。我不使用和在查詢中..因爲似乎不需要 – scaisEdge

+0

我儘管如此,仍然似乎沒有工作,它不斷增加一行,而不是更新它 – DarkEyeDragon