php - 使用 PHP similar_text 和 UPDATE 合并表

标签 php mysql sql

我想合并 MySQL 中的两个表:

table_1
--------------------------------------------------------
id |     table_1_name           |   table_1_art
--------------------------------------------------------
1  |     Ernest Hemingway       |   Writer
--------------------------------------------------------
2  |     Mark Twain             |   Writer
--------------------------------------------------------
3  |     Jackson Pollock        |   Painter
--------------------------------------------------------
4  |     Miles Davis            |   Musician
--------------------------------------------------------
5  |     Akira Kurosawa         |   Cinema
--------------------------------------------------------


table_2
--------------------------------------------------------
id |     table_2_name             |   table_2_art
--------------------------------------------------------
1  |     Hemingway, ernest        |   Writer
--------------------------------------------------------
2  |     Twain, Mark              |   Writer
--------------------------------------------------------
3  |     P., Jackson              |   Painter
--------------------------------------------------------
4  |     Miles Dewey Davis        |   Musician
--------------------------------------------------------
5  |     Bukowski, Charles        |   Poetry
--------------------------------------------------------

我想用 table_1_name 的数据更新字段 table_2_name,但前提是它们之间存在相似性。我正在使用 similar_text,并选择超过 40% 的相似度:

<?php

// Connection
$server = "****";
$user = "****";
$pass = "****";
$db_name = "****";
$conn = new mysqli($server, $user, $pass, $db_name);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else {
    echo "Connected <br/>";
}

//Begin
$petition = "SELECT * FROM table_1,  table_2";
$result = mysqli_query($conn, $petition);
while ($row = mysqli_fetch_assoc($result)) {
    $table_1_name = $row['table_1_name'];
    $table_1_art = $row['table_1_art'];
    $table_2_name = $row['table_2_name'];
    $table_2_art =$row['table_2_art'];

//Ask for similarities
similar_text($table_1_name, $table_2_name, $percent);

//Show coincidences over 40%
if ($percent > "40%") {
    echo $table_1_name." — ".$table_2_name." — ".$percent."% <br />";

//Update field in table_2_name for this coincidences
$sql = "UPDATE table_2 SET table_2_name = '$table_1_name'";
    if ($conn->query($sql) === true) {
        echo "updated <br/> <br/>";
    } else {
        echo "ERROR: " . $conn->error." <br/> <br/>";
    }
}
    $conn->close();
}

但是我得不到结果。而不是这个:

table_2
--------------------------------------------------------
id |     table_2_name             |   table_2_art
--------------------------------------------------------
1  |     Ernest Hemingway         |   Writer
--------------------------------------------------------
2  |     Mark Twain               |   Writer
--------------------------------------------------------
3  |     Jackson Pollock          |   Painter
--------------------------------------------------------
4  |     Miles Davis              |   Musician
--------------------------------------------------------
5  |     Bukowski, Charles        |   Poetry
--------------------------------------------------------

我明白了:

table_2
--------------------------------------------------------
id |     table_2_name             |   table_2_art
--------------------------------------------------------
1  |     Ernest Hemingway         |   Writer
--------------------------------------------------------
2  |     Ernest Hemingway         |   Writer
--------------------------------------------------------
3  |     Ernest Hemingway         |   Painter
--------------------------------------------------------
4  |     Ernest Hemingway         |   Musician
--------------------------------------------------------
5  |     Ernest Hemingway         |   Poetry
--------------------------------------------------------

我敢肯定这是一个很常见的错误,至少对于初学者来说是这样,但我找不到!

尼基塔

PD:正如@denny 所说,sql 需要一个条件,我忘了说我尝试了一些选项,例如:

$sql = "UPDATE table_2 SET table_2_name = '$table_1_name' WHERE ($percent > '45%')";

现在的问题是:哪个条件以及如何。不敢相信有那么难……

最佳答案

修改sql

$sql = "UPDATE table_2 SET table_2_name = '$table_1_name'";

为此

$sql = "UPDATE table_2 SET table_2_name = '$table_1_name'"where column="您的条件";

语法:-

更新 table_name set column_name = 'value' where column_name ='your_condition'

如果你执行

更新 table_name set column_name = 'value'

它将更新整个表格行

关于php - 使用 PHP similar_text 和 UPDATE 合并表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42461163/

相关文章:

php - 如何在数据库架构中表达购物网站的工作流和数据结构及其操作?

mysql - 获取客户行的总和

java - 如何合并单个sql表中两条记录的相同字段

java - JAVA 中的 SQL 查询。喜欢命令

sql - 如何在保持 0000 格式的 TEXT 中返回 DECIMAL(4,0)?

php - 错误处理 Symfony 自定义库

php - 如何在 MySQL 数据库中获取枚举可能值?

phpmyadmin:数据没有为 varchar (utf8_bin) 正确导入

mysql - 在 sql 中查询——数据透视或任何其他方式

php - 在不同的 PHP 页面中使用相同的 MySQL 连接