Примеры работы с MySQL (примеры запросов).
1. Перебор получаемых значений из базы данных
1 2 3 4 5 6 7 8 9 10 |
$sql = "SELECT * FROM users"; $query = mysql_query($sql); for ($rows = array(); $row = mysql_fetch_assoc($query); $rows[] = $row); for ($i = 0; $i < count($rows); $i++) { // получаем данные для каждого пользователя $name = $rows[$i]['name']; $age = $rows[$i]['age']; // что-то делаем с ними ... } |
2. Экранирование спецсимволов в запросах к базе данных (безопасность запросов)
1 2 |
$sql = "SELECT age FROM users WHERE name = '".mysql_real_escape_string($name)."'"; $query = mysql_query($sql); |
3. Получаем количество строк в таблице
1 2 |
$num=mysql_query('SELECT COUNT(*) FROM users'); echo "Количество строк: ".mysql_result($num, 0, 0); |
4. Скопировать все данные из 1-й таблицы в другую
1 |
insert into table2 select * from table1 |
5. Скопировать данные из колонки 1-й таблицы в колонку 2-й таблицы
1 |
insert into table2 select old_column as new_column from table1 |
6. Извлекаем данные из нескольких таблиц
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT u.first_name, u.last_name, u.patronymic, u.mobile_phone, u.phone, u.email, u.inn, r.date, r.money, r.term FROM users AS u LEFT JOIN requests AS r ON r.user_id=u.id WHERE r.is_confirm='0' |
Еще пример:
1 2 3 4 5 6 7 |
SELECT c.id,c.title,c.alias,c.introtext,c.created, c.images, c.created_by, u.name, cat.parent_id FROM table_content AS c LEFT JOIN table_users AS u ON c.created_by=u.id LEFT JOIN table_categories AS cat ON cat.id=c.catid WHERE c.state='1' AND cat.parent_id='$category_id' ORDER BY c.created DESC LIMIT 0,1 |
Используем в одном запросе LEFT JOIN и COUNT.
1 2 3 4 5 6 |
$sql="SELECT g.g_id, g.g_name, count(t.id) AS t_count FROM goals AS g LEFT JOIN teams AS t ON g.g_id = t.g_id WHERE g.user_id = '$user_id' ORDER BY g_id"; |
Исключение определенных записей из одной таблицы, id строк которой соответствуют полю (user_id) в другой таблице.
1 2 |
SELECT username, id FROM users WHERE id NOT IN (SELECT user_id FROM teams) |
Пример апдейта таблицы с join-ом:
1 2 3 4 |
UPDATE `ads` a JOIN (SELECT ad_id, SUM(hits) hits_all, SUM(clicks) clicks_all FROM `ads_statistics` GROUP BY ad_id) AS ON a.id = AS.ad_id SET a.hits_all = AS.hits_all, a.clicks_all = AS.clicks_all |
Категория: MySQL