За последние 24 часа нас посетили 16388 программистов и 1678 роботов. Сейчас ищут 932 программиста ...

Бинарное преобразование

Тема в разделе "PHP и базы данных", создана пользователем gloomen, 17 апр 2010.

  1. gloomen

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

    С нами с:
    16 сен 2009
    Сообщения:
    14
    Симпатии:
    0
    Всем привет!

    Помогите пожалуйста, разобраться с задачей.
    И так, в таблице table, есть ячейка info_hash (тип: blob, Атрибут: BINARY)
    Пытаюсь запись туда значение в результате получаеться [BLOB - 19Байт]
    т.е. 19 байтовое значение вместо 20 байтового
    Хотя перед записью в таблицу print показывает 20 байтовой значение.
    Может чё в наcтройках php.ini, хотя сейчас использую дефолтовые?????

    Код (Text):
    1.  
    2. $x = '566666666666666666623236666667777777777jkghkghhjkdsf';
    3. $infohash = pack("H*", sha1($x));
    4. print(bin2hex($infohash));
    5. mysql_query("UPDATE table SET info_hash = $infohash WHERE id=2");
    1. Если начинаешь обёртывать в кавычке, то он просто вставляет переменную: ".$infohash."
    2. Если использовать mysql_real_escape_string, то в ячейке будет храниться экранированное значение типа Zak's = Zak\'s
    3. Использовать BINARY вместо BLOB нельзя, поскольку изначально заложенно программой, также как и infohash должен быть равен = 20 байт не больше и не меньше.

    Может есть ещё какие нить варианты???
     
  2. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    mysql/mysqli_real_escape_string
     
  3. gloomen

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

    С нами с:
    16 сен 2009
    Сообщения:
    14
    Симпатии:
    0
    Непонял, что вы хотели этим сказать??? :)
     
  4. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Данные нужно эскейпить.
     
  5. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А спрашивальщика забанить. Чтобы не "выпытывал ума" на всех форумах.

    gloomen
    Идете и учите синтаксис языка. Потом - работу с БД.

    И только потом будете приходить и рассказывать про то, как не работают значения переменных в кавычках, про то, какие значения хранятся с БД после экранирования.
     
  6. gloomen

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

    С нами с:
    16 сен 2009
    Сообщения:
    14
    Симпатии:
    0
    Да уж, вот вам и ответ....