วิธีค้นหาและแทนค่าข้อมูลจำนวนมากในตารางฐานข้อมูล

บ่อยครั้งผมพบว่าเราจำเป็นต้อง Search และ Replace ข้อความ หรือ String จำนวนมากใน Database ยกตัวอย่างเช่นทำเมื่อมีการย้าย Website หรือเปลี่ยนชื่อเว็บไซต์ โดยเราจำเป็นต้องแก้ไข ชื่อเว็บไซต์ หรือ System Path ของรูปภาพที่ถูกบันทึกลงในตารางฐานข้อมูลแล้วจำนวนมาก

ในกรณีนี้แทนที่เราจะค่อยๆ เลื่อนหาในข้อความตารางแล้วค่อยๆ อัพเดทข้อมูล ให้เราใช้ php script ด้านล่างนี้แทนครับ

<php
// Connect to your MySQL database.
$hostname = "localhost";
$username = "DB_USERNAME";
$password = "DB_PASSWORD";
$database = "DB_NAME";
mysql_connect($hostname, $username, $password);
// The find and replace strings.
$find = "find_this_text";
$replace = "replace_with_this_tex";
$loop = mysql_query("
SELECT
concat('UPDATE ',table_schema,'.',table_name, ' SET ',column_name, '=replace(',column_name,', ''{$find}'', ''{$replace}'');') AS s
FROM
information_schema.columns
WHERE
table_schema = '{$database}'")
or die ('Cant loop through dbfields: ' . mysql_error());
while ($query = mysql_fetch_assoc($loop))
{
mysql_query($query['s']);
}
?>

เมื่อรันแล้ว Script จะเชื่อมต่อไปยังฐานข้อมูลที่ระบุ แล้วทำการค้นหาและแทนที่ข้อความ หรือ String ทั้งหมดที่ระบุทันทีครับ

Script นี้เป็น Code ที่เขียนง่ายๆ ทำงานได้เฉพาะบน php 5.6 ไม่มีการรายงานผลว่าเจอและแก้ไขไปเท่าไหร่นะครับ เมื่อรันแล้ว Script จะทำงานทันที เราสามารถตรวจสอบผลจากในตารางฐานข้อมูลของเราได้โดยตรงเลยครับ

หมายเหตุ :
เพื่อป้องกันความผิดพลาดที่อาจเกิดขึ้นควรทำการสำรองฐานข้อมูลก่อนทุกครั้งนะครับ

Was this article helpful?

Related Articles