<?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 содержит это
рыжеватый
Бирмингем
Dothan
Gadsden
Хантсвилле
мобильный
Montgomery
Мышечные косяки
Таскалуза
Я хотел бы сравнить мою базу данных sql с txt файлом, чтобы убедиться, что у меня нет переменных внутри. Я не хочу ставить дубликаты в стороне моего sql, я хотел бы знать, какой самый простой способ обновить мой sql
Вы могли бы использовать INSERT IGNORE INTO
вместо просто INSERT INTO
и MySQL будет игнорировать дубликаты записей. Увидеть Документация MySQL для INSERT для дополнительной информации. Итак, исходя из того, что я вижу в вашем вопросе, ваш SQL будет выглядеть примерно так:
INSERT IGNORE INTO iutca_jomcl_locations ('name') values (?)
Надеюсь это поможет! 🙂
Сначала мы читаем содержимое файла в $content
переменная
$content = file('mytxt.txt')
После публикации ваш файл содержит слова, разделенные пробелом (если нет, пропустите это и сделайте переменную $ words содержать нужные значения), поэтому нам нужно разделить контент, чтобы каждое слово получалось как элемент массива
$words = explode(" ", $content);
И, наконец, вставка значения и проверка, существует ли такой в базе данных
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
— столбец для вставки (также проверка уникальных значений с использованием этого столбца)
Я использовал этот код, и он работал на меня
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;
}
}
}
}