GetType () гарантирует приведение?

Вероятно, потому, что вы завершаете запрос в двойных кавычках, но переменная находится в одинарных кавычках, поэтому она обрабатывается как литерал, а если столбец int, вы получите вместо 0.

Попробуйте это:

$sql_query = "INSERT INTO users_info (steam64) VALUES ('" . $steam64 . "')";

Кроме того, перед тем, как я начну плакать, обязательно прочитайте SQL-инъекцию в случае, если вы не дезинфицируете переменные, отправляемые непосредственно в SQL-заявления.

- Обновление -

Исходя из вашего комментария «сбрасываемого значения»; число, которое вы пытаетесь вставить, слишком велико для 32-битных систем. Максимальный размер для 32-бит составляет 4 294 967 295, а максимальный для 64-бит - 18 446 744 073 709 551 615. Я бы рекомендовал преобразовать ваш столбец в хеш varchar(100), а не в int, или переключиться на 64-битную систему. Большая статья о max ints здесь и здесь .

0
задан Camilo Terevinto 17 March 2019 в 22:27
поделиться

3 ответа

Почему бы не сделать:

void f<T>(T o1, T o2) {
   if (o1.GetType() != o2.GetType()) return;
   // can I assert that t is not null ??
}

Для того, что я понимаю, вы хотите, проверив if (o1.GetType() != o2.GetType()) return;, чтобы убедиться, что o2 имеет тип T, а не производный тип. Так что o2 должно быть типа T, и у вас нет проблем с приведением типов.

0
ответ дан Enigmativity 17 March 2019 в 22:27
поделиться

Почему бы просто не использовать оператор is, 1 , хотя «возможно», немного медленнее

if (o2 is SomeType result) o1 = result;

или в качестве метода

private void SomeThingWeird<T>(ref T o1, object o2)
{
   if (o2 is T result)
      o1 = result;
}

Список литературы

1 Детализация в микробенчмарках .NET Runtime: оптимизации typeof .

0
ответ дан TheGeneral 17 March 2019 в 22:27
поделиться

Да, вы можете, но я бы предложил сделать еще один шаг и сделать следующее:

void f<T, U>(T t, U u) where T : class
{
    if (!t.GetType().IsAssignableFrom(u.GetType())) return;
    T ut = u as T;
    // can I assert that t is not null ?? Yes, you can
}

IsAssignableFrom следует прибить его для любого типа.

0
ответ дан Enigmativity 17 March 2019 в 22:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: