我有一堆项目名称,我想覆盖其中的名称为子字符串的链接。所以我想把数据放入列中,并简单地覆盖子字符串是否匹配。然而,这比我想象的更加困难,经过很多尝试后我找不到任何解决方案。PHP/MYSQL:比较一列中的单元格并覆盖另一列或表中的匹配子字符串
Item Name | Link
==================================================
Ice Tea | <a href="www.nothing.com">Spiced Rum</a>
Spiced Rum | <a href="www.nothing.com">Peaches</a>
| <a href="www.nothing.com">Ice Tea</a>
而且我希望它看起来像:
Item Name | Link
====================================================================================
<a href="www.nothing.com">Ice Tea</a> | <a href="www.nothing.com">Spiced Rum</a>
<a href="www.nothing.com">Spiced Rum</a> | <a href="www.nothing.com">Peaches</a>
| <a href="www.nothing.com">Ice Tea</a>
首先,我试着用一些PHP字符串函数这样做,但我无法弄清楚在整个链接列如何循环,直到比赛被找到,为每个项目名称。我所做的一切就是逐行替换。
<?php
require_once('connectvars.php');
// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
or die('Error connecting to MySQL server.');
$query = "SELECT Item, Link FROM MyDB";
$data = mysqli_query($dbc, $query)
or die(mysqli_error($dbc));
$i = 1;
while ($row = mysqli_fetch_array($data, MYSQLI_ASSOC)) {
$item = $row["Item"];
$link = $row["Link"];
$match = stripos($link, $item);
if ($match !== false) {
$query = "UPDATE Test SET Item = '$link' where ID = $i";
if (mysqli_query($dbc, $query)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($dbc);
}
}
$i++;
}
mysqli_close($dbc);
?>
然后我尝试过各种方式来使用MySQL的函数更换子,但我似乎无法得到这个工作。
SELECT column1, column2
FROM table
WHERE column1 LIKE CONCAT('%', column2, '%');
我可以将数据移动到单独的表,如果有帮助。
未经测试,但 - '更新测试设置\'项目\'= \'链接\'其中\'项目\'IS NOT NULL和0
是项目名称'NULL '如果不匹配? – Kisaragi