Метка

mysql

Всего: 64 записи

php: сохранение массива в БД MySQL

<?php
$array = array(1, 2, 3); //некий массив
$array_serialized = serialize($array); //эта переменная - текстовая, но содержит наш массив, записанный своим "кодом"
mysql_query("UPDATE TABLE `table` SET `field` = '".$array_serialized."'"); //записываем её в таблицу
$sql = mysql_query("SELECT * FROM `field`"); //читаем SQL данные
$temp = mysql_fetch_assoc($sql);
$array = unserialize( $temp['field'] ); //получаем свой массив.
?>

http://www.drupal.ru/node/33788

mysql: объединение запросов

Например нужно выбрать 2-х пользователей из России, Украины или Польши и 7 пользователей из других стран которые зарегистрировались вчера. Запрос будет такой:

(SELECT username FROM users WHERE country IN ('RU','UA','PL') AND regdt = DATE_SUB(CURDATE(), INTERVAL 1 DAY) ORDER BY RAND() LIMIT 2) UNION (SELECT username FROM users WHERE country NOT IN ('RU','UA','PL') AND regdt = DATE_SUB(CURDATE(), INTERVAL 1 DAY) ORDER BY RAND() LIMIT 7)

Выборка из mysql значений со вчерашней датой. Варианты.

Вариант 1. Дату получаем на PHP:
Вариант 1.1.

$time=mktime(date('H'),date('i'),date('s'),date('m'),date('d')-1,date('Y'));
$yd=date("Y-m-d",$time);

Вариант 1.2.

$yd=date("Y-m-d",time()-3600*24);

Вариант 1.3.

$yd=date('Y-m-d',strtotime('yesterday'));

Вариант 1.4.

$yd=date('Y-m-d',strtotime('-1 day'));

из всех этих вариантов последний наверное самый нормальный.
Ну и сама выборка

$query=mysql_query("SELECT fieldname FROM tablename WHERE datefield='".$yd."'");

И вариант 2. где только sql-запрос. Самый правильный в данном случае.

$query=mysql_query("SELECT fieldname FROM tablename WHERE datefield = DATE_SUB(CURDATE(), INTERVAL 1 DAY)");

Solial Engine 2.81 — проблемы с кодировкой БД после переноса на другой сервер

По умолчанию в Social Engine 2 БД создается в кодировке latin1_general_ci и после переноса на другой сервер для устранения ошибки с кодировкой во время чтения из БД пришлось в header.php и admin/admin_header.php после инициализации коннекта к базе:

$database = new se_database($database_host, $database_username, $database_password, $database_name);

дописать следующее:

$char = $database->database_query("set session character_set_server=latin1;"); 
$char = $database->database_query("set session character_set_database=latin1;"); 
$char = $database->database_query("set session character_set_connection=latin1;"); 
$char = $database->database_query("set session character_set_results=latin1;"); 
$char = $database->database_query("set session character_set_client=latin1;");