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

บ่อยครั้งผมพบว่าเราจำเป็นต้อง 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_text";

$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 ที่เขียนง่ายๆ ไม่มีการรายงานผลว่าเจอและแก้ไขไปเท่าไหร่นะครับ เมื่อรันแล้ว Script จะทำงานทันที เราสามารถตรวจสอบผลจากในตารางฐานข้อมูลของเราได้โดยตรงเลยครับ

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

  • 60 Users Found This Useful
คำตอบนี้เป็นประโยชน์แก่ท่านหรือไม่?

Related Articles

ติดตั้ง MongoDB ให้กับ CentOS 7

MongoDB เป็น Database ชนิด NoSQL ที่มีประสิทธิภาพในการ อ่านและเขียนข้อมูลได้เร็ว และรองรับการทำ...

วิธี Convert Database จาก utf8mb4 เป็น utf8

เมื่อ CMS ที่มีผู้ใช้จำนวนมาก อย่าง Wordpress และ CMS อื่นๆ ในปัจจุบันหันมาเลือกใช้งาน...

วิธีติดตั้ง MongoDB ให้กับ CentOS 6

MongoDB เป็น Database ชนิด NoSQL ที่มีประสิทธิภาพในการ อ่านและเขียนข้อมูลได้เร็ว และรองรับการทำ...

Powered by WHMCompleteSolution