использовать MySQL update
как это: -
UPDATE user_detail SET email='$email' WHERE s='$username';
Вам следует использовать UPDATE, если вы хотите изменить значение поля в выбранных вами записях используя предложение WHERE
blockquote>
Я думаю комментарии выше в значительной степени отвеченного вопрос. По существу, когда я записал это правило, я пытался передать защитную практику кодирования проверки всех исходных данных. Перечисления являются особым случаем, потому что многие разработчики неправильно предполагают, что они проверены, когда они не. В результате Вы будете часто видеть, перестали ли операторы или операторы переключения работать для неопределенного перечисления значений.
Просто имеют в виду, что по умолчанию перечисление является не чем иным как оберткой вокруг INT, и проверьте его так же, как если бы это был интервал
Для более детального обсуждения надлежащего перечислимого использования, Вы могли бы проверить сообщения в блоге Brad Abrams и Krzysztof Cwalina или их превосходной книгой "Руководство по проектированию Платформы: Конвенции, Идиомы и Шаблоны для Допускающих повторное использование Библиотек.NET"
Дело в том, что Вы могли бы надеяться, что при наличии параметра типа BookCategory, будете всегда иметь значимый книжная категория. Это не имеет место. Я мог звонить:
BookCategory weirdCategory = (BookCategory) 123456;
Test(weirdCategory);
, Если перечисление предназначено для представления известного набора значений, код, как должны ожидать, разумно не обработает значение вне который известный набор. Тест проверяет, является ли аргумент соответствующим сначала.
я лично инвертировал бы логику хотя:
public void Test(BookCategory cat)
{
if (!Enum.IsDefined(typeof(BookCategory), cat))
{
throw new ArgumentOutOfRangeException("cat");
}
}
В C# 3 это может легко быть сделано с дополнительным методом:
// Can't constrain T to be an enum, unfortunately. This will have to do :)
public static void ThrowIfNotDefined<T>(this T value, string name) where T : struct
{
if (!Enum.IsDefined(typeof(T), value))
{
throw new ArgumentOutOfRangeException(name);
}
}
Использование:
public void Test(BookCategory cat)
{
cat.ThrowIfNotDefined("cat");
}
Перечисления не проверяются:
enum Foo { A= 1, B = 2, C = 3}
Foo x = (Foo) 27; // works fine
Теперь Вы имеете Foo
, который не определяется. Он просто говорит, "проверяют Ваш вход". Обратите внимание, что Enum.IsDefined
является относительно медленным (базирующееся отражение). Лично, я склонен использовать переключатель с default
, который выдает исключение:
switch(x) {
case Foo.A: /* do something */ break;
case Foo.B: /* do something */ break;
case Foo.C: /* do something */ break;
default: throw new ArgumentOutOfRangeException("x");
}
Это вызвано тем, что полностью законно назвать тот "Тестовый" метод как это:
Test((BookCategory)-999);
Это снимет-999 в качестве BookCategory, но конечно результатом (передал как параметр "кошки" для Тестирования) не является допустимое значение для перечисления BookCategory.
Если Вы хотите расшириться, Ваше перечисление с новыми значениями в будущих версиях Вашей библиотеки не должно использовать конструкцию
если (Перечисление. IsDefined (typeof (BookCategory), кошка))
, Поскольку это только тестирует, допустим ли тип согласно перечислимому определению. Ваш код, с другой стороны, был только протестирован на в настоящее время позволяемые значения и мог бы перестать работать для новых значений.
См. Эта статья блога для большей справочной информации.