За последние 24 часа нас посетили 22037 программистов и 988 роботов. Сейчас ищут 762 программиста ...

кавычки при запросах в бд

Тема в разделе "Вопросы от блондинок", создана пользователем tommyangelo, 28 ноя 2010.

  1. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Почему при использовании плейсхолдеров проверяется тип переменной, и в кавычки заключаются только string? Почему тип int не следует обрамлять кавычками и эскейпить?
    Пробовал числовые типы передавать как string - всё работает. В чем подвох?
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    если не заключить в кавычки строку, то она может совпасть с полем, а числа база сама преобразует к нужному типу
    эскейпить не надо, но надо приводить допустим к int перед вставкой
     
  3. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Это понятно.

    Вопрос в том - есть разница между взятыми и не взятыми в кавычки числами ?
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    нет
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    ок, еще такой вопрос - в prepared statements например надо передавать типы - например ssids. Я вот и думаю - ничего ж не будет, если передать все параметры как s ?
    Испытания показали, что всё работает.
     
  6. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    tommyangelo
    Бывают исключения из правила - например в LIMIT ?,? нельзя передавать числа в кавычках.
    Еще иногда, довольно редко, мускул может отказаться использовать индекс на числовом поле, если в условии справа от знака равенства - строка вместо числа.

    Ну и при использовании SQLite надо помнить, что если передать строку - он и запишет в числовое поле строку. ;)
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Dagdamor
    Cпасибо =)