我有一堆項目名稱,我想覆蓋其中的名稱爲子字符串的鏈接。所以我想把數據放入列中,並簡單地覆蓋子字符串是否匹配。然而,這比我想象的更加困難,經過很多嘗試後我找不到任何解決方案。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