บ่อยครั้งผมพบว่าเราจำเป็นต้อง 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 จะทำงานทันที เราสามารถตรวจสอบผลจากในตารางฐานข้อมูลของเราได้โดยตรงเลยครับหมายเหตุ
เพื่อป้องกันความผิดพลาดที่อาจเกิดขึ้นควรทำการสำรองฐานข้อมูลก่อนทุกครั้งนะครับ
- 108 Gebruikers die dit nuttig vonden
Related Articles
Powered by WHMCompleteSolution