2015-06-05 21 views
0
<?php 
function db_query() 
    { 
     $servername = "localhost"; 
     $username = "root"; 
     $password = ""; 
     $dbname = "single4thenight"; 

     // Create connection 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     // Check connection 
     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
     } 

     $sql = "SELECT id, name, alias, type, parent, ordering, published FROM iutca_jomcl_locations"; //selects locations from 
     $result = $conn->query($sql); 

     if ($result->num_rows > 0) { 
      // output data of each row 
      while($row = $result->fetch_assoc()) { 
       echo "id: " . $row["id"]. " - Name: " . $row["name"]. " alias" . $row["alias"]. " type: " . $row["type"]. " - parent: " . $row["parent"]. " ordering " . $row["ordering"]. "published " . $row["published"]."<br>"; 
      } 
     } else { 
      echo "0 results"; 
     } 
     $conn->close(); 

    } 
function read_location() 
    { 
     $servername = "localhost"; 
     $username = "root"; 
     $password = ""; 
     $dbname = "single4thenight"; 

     // Create connection 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     // Check connection 
     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
     } 

     $sql = "SELECT name FROM iutca_jomcl_locations"; //selects locations from 
     $result = $conn->query($sql); 

     if ($result->num_rows > 0) 
     { 
      while($row = $result->fetch_assoc()) { 
      // echo "Location : " . $row["name"]."<br>"; 
       $row_name = $row["name"]; 
       echo $row_name.'<br />'; 
      } 

     } 
     $file1 = "./location.txt"; 
     $lines = file($file1); 
     foreach($lines as $line_num => $line) 
     { 
     echo $line; 

     } 

    } 

我location.txt文件中包含該與錶行比較txt文件行SQL表,如果變量dosent exsit插入

奧本 伯明翰 Dothan核心 加茲登 亨茨維爾 移動 蒙哥馬利 肌肉淺灘 Tuscaloosa

我想比較我的sql數據庫與txt文件,以確保我不areal有變量在裏面。我不想重複在我的SQL我想知道什麼是最簡單的方法來更新我的SQL

+0

問題是什麼(也使用此列檢查唯一值)? –

回答

1

你可以使用INSERT IGNORE INTO而不是INSERT INTO和MySQL然後將忽略重複的條目。請參閱MySQL documentation for INSERT瞭解更多信息。因此,基於我在你的問題看,你的SQL看起來是這樣的:

INSERT IGNORE INTO iutca_jomcl_locations ('name') values (?) 

希望這有助於! :)

+0

我用過這個,它幫助和工作謝謝 –

1

首先我們先讀文件內容到$content變量

$content = file('mytxt.txt') 

當你貼,你的文件包含空格分隔的單詞(如果沒有,請跳過此,使變量$字包含的值,你需要),所以我們需要分割的內容,讓每個單詞數組項

$words = explode(" ", $content); 

最後,插入值,檢查是否有一個類似的存在於DB

foreach($words as $word) 
{ 
    $sql = "INSERT iutca_jomcl_locations (name) 
    SELECT $word 
    WHERE NOT EXISTS 
      ( SELECT 1 
       FROM tblSoftwareTitles 
       WHERE name = $word 
     );" 
    $result = $conn->query($sql); 
} 

iutca_jomcl_locations - 表名
name - 列插入

+0

感謝幫助 –

0

我使用此代碼,它爲我工作

foreach($lines as $line_num => $line) 
     { 
      $line = $line; 
      //echo $line; 
      $sql = "SELECT ordering, name FROM iutca_jomcl_locations WHERE name='$line'"; 
      $result = $conn->query($sql); 

     if ($result->num_rows > 0) { 
     // output data of each row 
     while($row = $result->fetch_assoc()) { 
     //echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>"; 
     echo "Found Locations: " . $row["name"]." The ordering Number Is " . $row["ordering"]."<br>"; 
     $ordering =$row["ordering"]; 
     } 
     } else { 

       if($ordering >=0) 
       { 
        $count = $ordering; 
        //echo "0 results"; 
        $lowerCase = strtolower($line); 
        $sql = "INSERT INTO iutca_jomcl_locations (name, alias , parent, published,ordering) 
        VALUES ('$line','$lowerCase','$parent','1','$count')"; 


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

     }