Я использую this вопрос в качестве ссылки. Моя проблема в том, что он кодирует мою строку шестнадцатеричным, но не расшифровывает ее после ее записи в базу данных.SQL Server Escape String
HTML TextArea
<textarea class="form-control" rows="5" name="nomInfo[]" id="appNom" placeholder="Additional Information"></textarea>
Получение значения POST и вставки в БД
function mssql_escape($data) {
if(is_numeric($data))
return $data;
$unpacked = unpack('H*hex', $data);
return '0x' . $unpacked['hex'];
}
$nomInfo = $_POST['nomInfo'][0];
$nomInfoDecode = mssql_escape($nomInfo);
$query = "INSERT INTO dbo.emp_recog (nomInfo) VALUES (";
$query .= "'" . $nomInfoDecode . "');";
Так, например, если типы I в ggfdgdfg/fdg.fdgdf.gdf "fdskfdskfds;fsd ' sdfds' fds/f%
в текстовое поле и представить форму, это написано в база данных 0x67676664676466672f6664672e66646764662e676466205c226664736b6664736b6664733b667364205c272073646664735c27206664732f6625
Это кажется излишним, когда подготовленное заявление позволит избежать необходимости эвакуации строк. EDIT: но чтобы ответить на ваш вопрос, удалите апострофы во второй строке вашего запроса $ query. – ZLK
, например. '$ query. =" '". $ nomInfoDecode. "');"; '->' $ query. = $ nomInfoDecode. ");", поскольку апострофы заставляют вас буквально помещать '0x676766646764666726666672e66646764662e676466205c226664736b6664736b6664733b667364205c272073646664735c27206664732f6625' в отличие от того, что представляет это шестнадцатеричное значение. – ZLK
Это имеет смысл и выглядит корректно, но по какой-то причине он все еще записывает шестнадцатеричную строку в базу данных, выполняя именно то, что вы сказали. @ZLK – collint25