如果变量dosent exsit插入它,则将sql表与txt文件逐行比较

时间:2015-06-05 18:26:24

标签: php mysql sql sql-update requirements.txt

<?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文件包含此

赤褐色 伯明翰 多森 加兹登 亨茨维尔 移动 蒙哥马利 肌肉浅滩 Tuscaloosa的

我想将我的sql数据库与txt文件进行比较,以确保我没有isaldy里面有变量。我不想在我的sql中添加重复项我想知道更新我的sql最简单的方法

3 个答案:

答案 0 :(得分:1)

您可以使用INSERT IGNORE INTO而不是INSERT INTO,然后MySQL会忽略重复的条目。有关详细信息,请参阅MySQL documentation for INSERT。因此,根据我在您的问题中看到的内容,您的SQL看起来像:

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

希望这有帮助! :)

答案 1 :(得分:1)

首先,我们将文件内容读取到$content变量

$content = file('mytxt.txt')

正如您发布的那样,您的文件包含用空格分隔的单词(如果没有,请跳过这个并使变量$ words包含您需要的值)所以我们需要拆分内容,将每个单词作为数组项

$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 - 要插入的列(也使用此列检查唯一值)

答案 2 :(得分: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;
                    }
                }
        }

        }