За последние 24 часа нас посетили 17377 программистов и 1672 робота. Сейчас ищут 1673 программиста ...

Запись в бинарные поля

Тема в разделе "MSSQL", создана пользователем Koda, 1 сен 2011.

  1. Koda

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

    С нами с:
    1 сен 2011
    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток! Требуется помесить в поле image бинарные данные.
    Взять бинарную строку в кавычки, и отправить обычным апдейтом - не работает)
    подскажите варинты решения пожалуйста)
     
  2. Koda

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

    С нами с:
    1 сен 2011
    Сообщения:
    2
    Симпатии:
    0
    разобрался наконец-то) bin2hex помогло))) и 0x дописать перед строкой)
     
  3. Alex870

    Alex870 Новичок

    С нами с:
    8 дек 2013
    Сообщения:
    121
    Симпатии:
    2
    А не думал, что случиться если фотка буде > 2 МБ?
    Я думаю лучше использовать base64_encode, base64_decode.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    лучше фотку в базу не совать вообще
     
  5. Alex870

    Alex870 Новичок

    С нами с:
    8 дек 2013
    Сообщения:
    121
    Симпатии:
    2
    Абсолютно согласен! Работает значительно дольше, даже если фотки маленькие.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Зависит от того, для чего делается. Мб парень эксперементирует и открывает для себя чудесный мир BLOBов. Пускай, оно тоже полезно. Бинарные данные - это не всегда картинки и не всегда мегабайты.

    Ну а так да, картинки и иже сними лучше хранить в текстовых полях в виде путей к ним :)
     
  7. stryukov

    stryukov Новичок

    С нами с:
    16 июн 2016
    Сообщения:
    4
    Симпатии:
    0
    Приветствую! Проблема та же, необходимо поместить бинарные данные в базу ms sql. Используется драйвер SQLSRV. Не могу побороть ошибку: An invalid PHP type for parameter 14 was specified.
    Прошу помощи. Ниже выкладываю код.

    PHP:
    1. include "../db.php";
    2.  
    3. $tags = $_POST["tags"];
    4. $id = $_POST["id"];
    5. $sId = $_SESSION['id'];
    6. $edit = $_POST["edit"];
    7. $fname = iconv("utf-8","windows-1251",$_POST['fname']);
    8. $iname = iconv("utf-8","windows-1251",$_POST['iname']);
    9. $oname = iconv("utf-8","windows-1251",$_POST['oname']);
    10. $idDep = $_POST["idDep"];
    11. $kab = iconv("utf-8","windows-1251",$_POST['kab']);
    12. $job = iconv("utf-8","windows-1251",$_POST['dolgn']);
    13. $info = iconv("utf-8","windows-1251",$_POST['dopInfo']);
    14. $phone = $_POST["tel"];
    15. $userad = $_POST["userad"];
    16. $email = $_POST["email"];
    17. $pass = $_POST["pass"];
    18.  
    19. $photo = $_POST['photo'];
    20. $photo = str_replace('data:image/png;base64,', '', $photo);
    21. $photo = str_replace(' ', '+', $photo);
    22. $datastring = base64_decode($photo);
    23. $data = unpack("H*hex", $datastring);
    24. $photo = '0x'.$data['hex'];
    25.  
    26. $tsql_callSP = "{call newEmployee( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? )}";
    27.  
    28. $params = array(
    29. array(&$id, SQLSRV_PARAM_INOUT),
    30. array(&$edit, SQLSRV_PARAM_IN),
    31. array(&$fname, SQLSRV_PARAM_IN),
    32. array(&$iname, SQLSRV_PARAM_IN),
    33. array(&$oname, SQLSRV_PARAM_IN),
    34. array(&$idDep, SQLSRV_PARAM_IN),
    35. array(&$kab, SQLSRV_PARAM_IN),
    36. array(&$job, SQLSRV_PARAM_IN),
    37. array(&$info, SQLSRV_PARAM_IN),
    38. array(&$phone, SQLSRV_PARAM_IN),
    39. array(&$userad, SQLSRV_PARAM_IN),
    40. array(&$email, SQLSRV_PARAM_IN),
    41. array(&$pass, SQLSRV_PARAM_IN),
    42. array(&$photo, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY),SQLSRV_SQLTYPE_VARBINARY('max')),
    43. array(&$tags, SQLSRV_PARAM_IN),
    44. array(&$sId, SQLSRV_PARAM_IN));
    45.  
    46. $stmt = sqlsrv_query( $conn, $tsql_callSP, $params);
    47. if( $stmt === false )
    48. {
    49.      echo "Error in executing statement 1.\n";
    50.      die( print_r( sqlsrv_errors(), true));
    51. }
    52.  
    53. $row = sqlsrv_fetch_array($stmt);
    54. echo iconv('windows-1251','utf-8', $row['result']);
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @stryukov на какой строке ошибка?
     
    metadon нравится это.
  9. stryukov

    stryukov Новичок

    С нами с:
    16 июн 2016
    Сообщения:
    4
    Симпатии:
    0
    Ошибка на строке выполнения запроса. Вот текст ошибки.
    Код (Text):
    1. Error in executing statement 1.
    2. Array
    3. (
    4.     [0] => Array
    5.         (
    6.             [0] => IMSSP
    7.             [SQLSTATE] => IMSSP
    8.             [1] => -16
    9.             [code] => -16
    10.             [2] => An invalid PHP type for parameter 14 was specified.
    11.             [message] => An invalid PHP type for parameter 14 was specified.
    12.         )
    13.  
    14. )
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Это у тебя функции или константы?
     
    metadon нравится это.
  11. stryukov

    stryukov Новичок

    С нами с:
    16 июн 2016
    Сообщения:
    4
    Симпатии:
    0
  12. stryukov

    stryukov Новичок

    С нами с:
    16 июн 2016
    Сообщения:
    4
    Симпатии:
    0
    никто не может подсказать решение данной проблемы?