$_SERVER['REMOTE_ADDR'];
Пример:
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
Нет. Значение для предложения DEFAULT должно быть константой. (Единственным исключением из этого правила является использование CURRENT_TIMESTAMP
в качестве значения по умолчанию для столбца TIMESTAMP
.)
. В качестве альтернативы вы можете использовать TRIGGER для установки значения для столбца, когда строка вставлена или обновлена.
Например, в триггере BEFORE INSERT FOR EACH ROW вы можете выполнять вычисления из значений, предоставленных для других столбцов и / или данных запроса из других таблиц.
< hr>EDIT
Для примера, приведенного в EDIT вопроса, отправной точкой для определения триггера:
CREATE TRIGGER mytable_bi
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
SET NEW.percentage = (100.0 * NEW.marks) / NULLIF(NEW.total_marks,0);
END
Решение триггера отлично, но я пришел сюда с немного другой ситуацией, и это решение не то, что я искал.
Я использую значение по умолчанию для единственного и единственного времени, когда я добавляю новый столбец в таблицу. В любой другой ситуации я не буду использовать это значение по умолчанию. Поэтому я не хочу иметь триггер.
Я думаю, что в этом случае единственной опцией является значение по умолчанию 0 (или любое конкретное значение). Затем обновите все эти только что вставленные 0 со значением, необходимым для вычисления.
Наконец, обновите значение по умолчанию этого нового столбца до того, что необходимо с этого момента.