【发布时间】:2016-10-26 22:51:19
【问题描述】:
我使用this 问题作为参考。我的问题是它将我的字符串编码为十六进制,但一旦写入数据库就没有解码。
HTML 文本区域
<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 . "');";
例如,如果我在 textarea 中输入 ggfdgdfg/fdg.fdgdf.gdf "fdskfdskfds;fsd ' sdfds' fds/f% 并提交表单,则会将其写入数据库 0x67676664676466672f6664672e66646764662e676466205c226664736b6664736b6664733b667364205c272073646664735c27206664732f6625
【问题讨论】:
-
当准备好的语句避免需要转义字符串时,这似乎有点过头了。编辑:但要回答您的问题,请删除 $query 事物第二行的撇号。
-
例如
$query .= "'" . $nomInfoDecode . "');";- >$query .= $nomInfoDecode . ");";因为撇号让你从字面上把在“0x67676664676466672f6664672e66646764662e676466205c226664736b6664736b6664733b667364205c272073646664735c27206664732f6625”,而不是该十六进制值代表什么 SPAN> -
这是有道理的,看起来是正确的,但由于某种原因,在完全按照你说的做之后,它仍然将十六进制字符串写入数据库。 @ZLK
-
您的查询实际上是如何执行的?
-
你是放弃还是什么???
标签: php html sql-server