SQL примитивы

Редакция автор: stain

Обычно в базах данных содержатся три вида данных:

  • 1. Контент
  • 2. Комментарии, обсуждения, и т.п.
  • 3. Данные для Авторизации пользователей.

Каждый вид находится в своих таблицах. SQL в командах анализирует БОЛЬШИЕ и маленькие буквы, как одно и тоже (SQL is case insensitive. It is common practice to write all SQL commands in upper-case).
(далее…)

Комментариев: 0

PHP примитивы — Подключение к базе данных через PDO

Редакция автор: stain

Защита от SQL инъекций

Защита собственными силами
Библиотека и методы ее использования

Класс для безопасной и удобной работы с MySQL
Еще про класс

PDO

Частичка статьи.

Пример типа правильного соединения:

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn, $user, $pass, $opt);

- в $dsn задается тип БД, с которым будем работать (mysql), хост, имя базы данных и чарсет.
- затем идут имя пользователя и пароль
- после которого задается массив опций, про который ни в одном из руководств не пишут.

При том что этот массив - чрезвычайно полезная, как уже говорилось выше, штука. Самое главное - режим выдачи ошибок надо задавать только в виде исключений.
- Во-первых, потому что во всех остальных режимах PDO не сообщает об ошибке ничего внятного,
- во-вторых, потому что исключение всегда содержит в себе незаменимый stack trace,
- в-третьих - исключения чрезвычайно удобно обрабатывать.

Тут выше описан типа "верный" способ соединения с базой, так вот в реальности он заработал только в таком варианте.

$host = 'localhost';
$dbname = 'basename';
$user = 'username';
$password = 'pass1234';
//$charset='utf8';

$dsn = "mysql:host=$host;dbname=$dbname"; //;charset=$charset
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn, $user, $password, $opt);
$pdo->exec("set names utf8");

//простой запрос
$stmt = $pdo->query('SELECT login FROM users');
while ($row = $stmt->fetch())
{
    echo $row['login'] . " ";
}

Другой вариант

//Описание переменных для доступа к бд
$host = 'localhost';
$dbname = 'basename';
define('user', 'username');
define('password', 'pass1234');

//Подключение к бд
try {
  $db = new PDO("mysql:host=$host;dbname=$dbname", user, password);
  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $db->exec("set names utf8");
}
catch(PDOException $e) {
    echo $e->getMessage();
}

Так же по непонятным мне причинам константы host и dbname не воспринимаются, а вот простые переменные с ними все работает

//Простой запрос к бд
$stmt = $db->query('SELECT login FROM users');
while ($row = $stmt->fetch())
{
    echo $row['login'] . " ";
}

Вариант с выводом ошибок(все в одном поэтому требует доработки)

try {
    $dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->exec("set names utf8");
    foreach($dbh->query('SELECT * from users') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . " br - убрал галочки для лучшей читабельности ";
    die();
}

Самый логичный вариант

//Описание переменных для доступа к бд
$host = 'localhost';
$dbname = 'basename';
$user = 'username';
$password = 'pass1234';

//Подключение к бд
    $db = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->exec("set names utf8");

//Простой запрос к бд с обработкой ошибок
try{
	$stmt = $db->query('SELECT login FROM users');
	while ($row = $stmt->fetch()){
    		echo $row['login'] . " ";
	}
	$stmt = null; //очищает переменную $stmt
}
 catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . " br - убрал галочки для лучшей читабельности ";
    die();
}

Подключение к различным типам баз данных описано тут
Еще вариант

Комментариев: 0

Перенос сайта на WordPress с одного домена на другой

Редакция автор: stain

При простом переносе файлов wordpress из одной директории в другую, сайт «ломается» — нарушается вёрстка, пропадают картинки. Данная инструкция поможет вам, если:

  • Вам необходимо произвести перенос с одного домена на другой или с поддомена на основной домен;
  • Вам необходимо произвести перенос с подкаталога ../domain.ru/wordpress в основной каталог ../domain.ru/.

Перенос с одного домена на другой

В том числе, с поддомена sub.domain.ru на основной домен domain.ru.

1. Скопируйте файлы сайта в корневую папку нового сайта: Как узнать корневую папку сайта;

2. При необходимости создайте новую базу данных (БД) и импортируйте в неё дамп БД прошлого сайта: Как создать базу данных, Импорт базы данных MySQL, еще по импорту БД, если база большая, то лучше подключитесь к серверу по SSH и введите команду:

mysqldump -uUSER -pPASSWORD DBNAME > DUMPFILE.sql

Между флагами —u, —p и их аргументами (в данном случае USER и PASSWORD) пробел отсутствует.;

3. После импорта необходимо скорректировать адрес сайта в базе данных. Для этого откройте базу данных нового сайта в phpmyadmin. Выберите необходимую базу и перейдите во вкладку SQL. По очереди выполните следующие SQL-запросы:

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://olddomain.ru', 'http://newdomain.ru') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = REPLACE(guid, 'http://olddomain.ru','http://newdomain.ru');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://olddomain.ru', 'http://newdomain.ru');

Где olddomain.ru — прежнее название сайта, а newdomain.ru — новое название сайта;

4. очистите папку wp-content/cache. Перед проверкой корректности отображения сайта очистите кэш браузера.

Перенос с подкаталога домена на основной домен

Например, если перенос производится с подкаталога ../domain.ru/wordpress в основной каталог ../domain.ru/.

1. Скопируйте файлы сайта в корневую папку нового сайта: Как узнать корневую папку сайта;

2. При необходимости создайте новую базу данных (БД) и импортируйте в неё дамп БД прошлого сайта: Как создать базу данных, Импорт базы данных MySQL;

3. Проверьте файл .htaccess. Строки «RewriteBase» и «RewriteRule» должны выглядеть так:

RewriteBase /
RewriteRule . /index.php [L]

4. После импорта необходимо скорректировать адрес сайта в базе данных. Для этого откройте базу данных нового сайта в Phpmyadmin: Как войти в phpMyAdmin Выберите необходимую базу и перейдите во вкладку SQL. По очереди выполните следующие SQL-запросы:

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://domain.ru/wordpress', 'http://domain.ru') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = REPLACE(guid, 'http://domain.ru/wordpress','http://domain.ru');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://domain.ru/wordpress', 'http://domain.ru');

Где domain.ru/wordpress — прежний адрес сайта, а domain.ru — новый адрес сайта;

5. Очистите папку wp-content/cache. Перед проверкой корректности отображения сайта очистите кэш браузера.

Нагло выкрал с: Regru

Еще на туже тему + еще + еще

Второй статьей не пользовался, а первая помогла лишь частично. Движок поставил по новой, прицепив к уже пофиксеной базе данных, установил все необходимые аддоны, запустил, и после этого все срослось, правда пришлось немного помучаться с Polylang, преставлять флажки и галки а то он запомнил старый домен и никак не хотел открывать правильные страницы.

Комментариев: 0