Доброго времени суток! Требуется помесить в поле image бинарные данные. Взять бинарную строку в кавычки, и отправить обычным апдейтом - не работает) подскажите варинты решения пожалуйста)
А не думал, что случиться если фотка буде > 2 МБ? Я думаю лучше использовать base64_encode, base64_decode.
Зависит от того, для чего делается. Мб парень эксперементирует и открывает для себя чудесный мир BLOBов. Пускай, оно тоже полезно. Бинарные данные - это не всегда картинки и не всегда мегабайты. Ну а так да, картинки и иже сними лучше хранить в текстовых полях в виде путей к ним
Приветствую! Проблема та же, необходимо поместить бинарные данные в базу ms sql. Используется драйвер SQLSRV. Не могу побороть ошибку: An invalid PHP type for parameter 14 was specified. Прошу помощи. Ниже выкладываю код. PHP: include "../db.php"; session_start(); $tags = $_POST["tags"]; $id = $_POST["id"]; $sId = $_SESSION['id']; $edit = $_POST["edit"]; $fname = iconv("utf-8","windows-1251",$_POST['fname']); $iname = iconv("utf-8","windows-1251",$_POST['iname']); $oname = iconv("utf-8","windows-1251",$_POST['oname']); $idDep = $_POST["idDep"]; $kab = iconv("utf-8","windows-1251",$_POST['kab']); $job = iconv("utf-8","windows-1251",$_POST['dolgn']); $info = iconv("utf-8","windows-1251",$_POST['dopInfo']); $phone = $_POST["tel"]; $userad = $_POST["userad"]; $email = $_POST["email"]; $pass = $_POST["pass"]; $photo = $_POST['photo']; $photo = str_replace('data:image/png;base64,', '', $photo); $photo = str_replace(' ', '+', $photo); $datastring = base64_decode($photo); $data = unpack("H*hex", $datastring); $photo = '0x'.$data['hex']; $tsql_callSP = "{call newEmployee( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? )}"; $params = array( array(&$id, SQLSRV_PARAM_INOUT), array(&$edit, SQLSRV_PARAM_IN), array(&$fname, SQLSRV_PARAM_IN), array(&$iname, SQLSRV_PARAM_IN), array(&$oname, SQLSRV_PARAM_IN), array(&$idDep, SQLSRV_PARAM_IN), array(&$kab, SQLSRV_PARAM_IN), array(&$job, SQLSRV_PARAM_IN), array(&$info, SQLSRV_PARAM_IN), array(&$phone, SQLSRV_PARAM_IN), array(&$userad, SQLSRV_PARAM_IN), array(&$email, SQLSRV_PARAM_IN), array(&$pass, SQLSRV_PARAM_IN), array(&$photo, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY),SQLSRV_SQLTYPE_VARBINARY('max')), array(&$tags, SQLSRV_PARAM_IN), array(&$sId, SQLSRV_PARAM_IN)); $stmt = sqlsrv_query( $conn, $tsql_callSP, $params); if( $stmt === false ) { echo "Error in executing statement 1.\n"; die( print_r( sqlsrv_errors(), true)); } $row = sqlsrv_fetch_array($stmt); echo iconv('windows-1251','utf-8', $row['result']);
Ошибка на строке выполнения запроса. Вот текст ошибки. Код (Text): Error in executing statement 1. Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -16 [code] => -16 [2] => An invalid PHP type for parameter 14 was specified. [message] => An invalid PHP type for parameter 14 was specified. ) )
@denis01 это параметры входящей переменной запроса (https://php.ru/manual/function.sqlsrv-query.html). Ранее их не было, сначала делал как все остальные входные параметры. После почитал про указание типов данных (https://msdn.microsoft.com/en-us/library/cc626305.aspx). Указал типы данных, результата нет. Такая же ошибка.