MySQL

WordPress – Změna domény v databázi

Publikováno MySQL, WordPress

Nejspíš to někteří z Vás znají: když je potřeba migrovat z domény na doménu, je potřeba v databázi provést pár SQL dotazů, které změní URL webu všude, kde by mohla být:

UPDATE wp_options SET option_value = 
replace(option_value, 'http://www.old.cz', 'http://www.new.cz') 
WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = 
replace(guid, 'http://www.old.cz','http://www.new.cz');

UPDATE wp_posts SET post_content = 
replace(post_content, 'http://www.old.cz', 'http://www.new.cz');

UPDATE wp_postmeta SET meta_value = 
replace(meta_value, 'http://www.old.cz', 'http://www.new.cz');

Vytvořil jsem jednoduchý nástroj, který SQL dotazy vygeneruje přímo pro zadané URL adresy: tools.katuscak.cz/migrace.php

Číst celé

Řazení záznamů při GROUP BY

Publikováno MySQL

Situace: Potřebujete seznam nejnovějších článků od všech redaktorů.

Vytvoříme tedy dotaz jako tento:

SELECT * FROM `articles` GROUP BY `author_id` ORDER BY `created_date` DESC 
#Dotaz trval 0.0036 sekund

Zjistíme ale, že dotaz vrací ne poslední článek od každého redaktora, ale první, který byl do databáze vložený. To je špatně. Jelikož příkaz GROUP BY se provádí před ORDER BY.

Řešením je použití vnořeného SQL dotazu, kde nejprve výsledky seřadíme.

SELECT * FROM 
(SELECT * FROM `articles` ORDER BY `created_date` DESC) as t
GROUP BY `author_id` 
#Dotaz trval 0.0042 sekund

Číst celé

str_replace() – v PHP, v MySQL, v JavaScriptu

Publikováno JavaScript, MySQL, PHP

Ukázka přepisovací funkce v PHP, MySQL a Javascriptu.

PHP

// "123 456 798" => "123456789
$telefon = "123 456 789";
$telefon = str_replace(" ","",$telefon);

MySQL

# "123 456 798" => "123456789
SELECT REPLACE(`telefon`, ' ', '') FROM `tabulka`;

JavaScript

// "123 456 798" => "123456789
var telefon = "123 456 789";
telefon = telefon.replace(" ","");

Číst celé