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

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

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

  • 160 Benutzer fanden dies hilfreich
War diese Antwort hilfreich?

Related Articles

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

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

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

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

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

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

Powered by WHMCompleteSolution