我有问题。当我在php中执行这样的插入时:
sql = "INSERT INTO mytable (id, value)
VALUES ('sds83','".$EncryptedString."')";
当我运行以下查询时,它有时会起作用,有时却不起作用。问题是有时$ EncryptedString包含这样的字符:')') 这会导致语法错误。 $ EncryptedString包含二进制数据,我该如何处理这个问题?
答案 0 :(得分:2)
转义加密字符串
mysql_real_escape_string()调用MySQL的库函数 mysql_real_escape_string,它将反斜杠添加到以下内容 字符:\ x00,\ n,\ r,\,',“和\ x1a。
请参阅StripSlashes
答案 1 :(得分:1)
使用支持预准备语句的PDO(或其他数据库层)。
当您使用查询参数而不是执行原始SQL时,您可以获得速度提升(数据库只需要针对一个查询进行规划和优化),并且您写入其参数的所有数据都会立即与查询本身完全隔离。
令人惊讶的是,有多少人没有这个!采取主动并更新您的代码。
答案 2 :(得分:0)
您需要逃离$EncryptedString
。根据您使用的MySQL连接对象/功能的类型,它可能是这样的:
$sql = "
INSERT INTO mytable (id, value)
VALUES ('sds83','" . mysql_real_escape_string($EncryptedString) . "')";