Вопросы
Почему не стоит использовать функции mysql_* в PHP?
Проблема с использованием функций mysql_*
в PHP
Я столкнулся с некоторыми проблемами при использовании функций mysql_*
в PHP, таких как mysql_query()
, mysql_connect()
и mysql_real_escape_string()
. Хотел бы понять технические причины, по которым не стоит использовать эти функции.
1....
Как предотвратить SQL-инъекции в PHP?
Описание проблемы
Я столкнулся с проблемой SQL-инъекций в своем приложении. Когда пользовательский ввод вставляется в SQL-запрос без предварительной обработки, это делает систему уязвимой к атакам. Я привожу ниже пример кода, где данная уязвимость имеется:
$unsafe_variable =...
В чем разница между INNER JOIN, LEFT JOIN, RIGHT JOIN и FULL JOIN?
Описание проблемы
На StackOverflow существует вопрос с ответами на тему различий между различными типами соединений в SQL. Известно, что существует несколько видов соединений, таких как INNER JOIN
, LEFT JOIN
, RIGHT JOIN
и FULL JOIN
, однако, я не совсем понимаю, каковы основные отличия...
Как сбросить AUTO_INCREMENT в MySQL
Заголовок: Как сбросить значение AUTO_INCREMENT для поля?
Содержимое: Я хочу сбросить значение AUTO_INCREMENT для определенного поля в базе данных, чтобы оно снова начинало счёт с 1. Как это можно сделать?
SQL: выбрать только строки с максимальным значением в столбце
Описание проблемы для StackOverflow:
У меня есть таблица для документов (здесь представлена упрощенная версия):
CREATE TABLE documents (
id INT,
rev INT,
content TEXT
);
Таблица содержит следующие данные:
id | rev | content |
---|---|---|
1 | 1 | ... ... |
Получение последней записи в каждой группе - MySQL
У меня есть таблица messages
, содержащая данные, как показано ниже:
Id Name Other_Columns
-------------------------
1 A A_data_1
2 A A_data_2
3 A A_data_3
4 B B_data_1
5 B B_data_2
6 C C_data_1
Когда я выполняю запрос `select *...
UTF-8 на всех уровнях!
Я настраиваю новый сервер и хочу полностью поддерживать UTF-8 в своем веб-приложении. В прошлом, когда я пробовал это на существующих серверах, мне всегда приходилось возвращаться к ISO-8859-1.
Где именно мне нужно установить кодировку/символьные наборы? Я знаю, что необходимо настроить Apache,...
INNER JOIN ON vs WHERE: что выбрать?
Проблема заключается в том, чтобы понять, действуют ли два различных способа выполнения SQL-запросов в MySQL одинаково.
Для простоты предположим, что все соответствующие поля имеют значение NOT NULL.
Есть два способа записи запроса:
- С использованием старого синтаксиса с запятой для...
Присоединение против подзапроса: что выбрать?
Я старомодный пользователь MySQL и всегда предпочитал использовать JOIN
вместо подзапросов. Но в последнее время все используют подзапросы, и я этого не понимаю; мне это не нравится, но я не могу объяснить, почему.
У меня недостаточно теоретических знаний, чтобы самостоятельно оценить, есть ли...
Вставка записи в таблицу MySQL или обновление, если запись существует
Я хочу добавить строку в таблицу базы данных, но если строка с тем же уникальным ключом уже существует, я хочу обновить эту строку.
Например:
INSERT INTO table_name (ID, NAME, AGE) VALUES(1, "A", 19);
Допустим, уникальным ключом является ID
, и в моей базе данных уже есть строка с...
Ошибка: mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows и др. ожидают ресурс в качестве параметра 1
Я пытаюсь извлечь данные из таблицы MySQL, но получаю одно из следующих сообщений об ошибке:
mysql_fetch_array() expects parameter 1 to be resource, boolean given
Вот мой код:
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query('SELECT * FROM...
Как выбрать строки с MAX(значение колонки), используя PARTITION по другой колонке в MySQL?
У меня есть таблица с показателями игроков:
CREATE TABLE TopTen (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
home INT UNSIGNED NOT NULL,
`datetime` DATETIME NOT NULL,
player VARCHAR(6) NOT NULL,
resource INT NOT NULL
);
Какой запрос вернет строки для каждого уникального...
Когда использовать одинарные кавычки, двойные кавычки и обратные кавычки в MySQL
Я пытаюсь разобраться в том, как правильно писать SQL-запросы. Я понимаю, что важно придерживаться единого стиля. До сих пор я использовал одинарные кавычки, двойные кавычки и обратные кавычки совершенно случайным образом, не задумываясь о выборе.
Пример:
$query = 'INSERT INTO table (id,...
MySQL Запрос: Группировка по Дню / Месяцу / Году
Можно ли составить простой запрос для подсчета количества записей за определенный период времени, например, год, месяц или день, используя поле типа TIMESTAMP? Например, такой запрос:
SELECT COUNT(id) FROM stats WHERE record_date.YEAR = 2009 GROUP BY record_date.YEAR
Или даже:
SELECT...
Как временно отключить ограничение внешнего ключа в MySQL?
Заголовок: Как временно отключить ограничения внешних ключей в MySQL?
Описание проблемы: У меня есть две модели Django, каждая из которых имеет внешние ключи к другой. При попытке удалить экземпляры одной из моделей возникает ошибка из-за ограничения внешнего...
MySQL: Как получить кодировку базы данных, таблицы или столбца?
Какая (по умолчанию) кодировка символов используется для:
- Базы данных MySQL
- Таблицы MySQL
- Столбца MySQL
Я сталкиваюсь с проблемами, связанными с кодировкой символов в MySQL, и хотел бы прояснить, какая кодировка используется по умолчанию на разных уровнях: для всей базы данных, отдельных...
Какой лучший порядок сортировки использовать для MySQL с PHP? [закрыто]
Проблема: Выбор коллации для MySQL для универсального веб-сайта
Здравствуйте!
Существует ли официально рекомендуемая коллация для MySQL, которая подходит для общего веб-сайта, где вы не на 100% уверены в вводимых данных? Я понимаю, что все кодировки должны быть одинаковыми, такими как MySQL,...
SQL-инъекция, обхватывающая mysql_real_escape_string()
Подскажите, возможна ли уязвимость для SQL-инъекции даже с использованием функции mysql_real_escape_string()?
Рассмотрим следующую ситуацию. SQL-код формируется в PHP так:
$login = mysql_real_escape_string(GetFromPost('login')); $password = mysql_real_escape_string(GetFromPost('password'));
$sql...
Создание нового пользователя в MySQL с полным доступом к одной базе данных
Я хочу создать нового пользователя в MySQL и предоставить ему полный доступ только к одной базе данных, скажем, dbTest, которую я создаю с помощью команды create database dbTest;. Какие MySQL команды мне нужно выполнить для этого?
'IF' в операторе 'SELECT' – выбор выходного значения в зависимости от значений столбца
У меня есть запрос SQL:
SELECT id, amount FROM report
Мне нужно, чтобы поле amount
оставалось без изменений, если report.type='P'
, и принимало отрицательное значение (-amount
), если report.type='N'
. Как мне добавить эту логику в указанный запрос?