MySql将二进制数据插入到db而没有错误

时间:2011-09-26 02:07:21

标签: php mysql insert

我有问题。当我在php中执行这样的插入时:

sql = "INSERT INTO mytable (id, value)
VALUES ('sds83','".$EncryptedString."')";

当我运行以下查询时,它有时会起作用,有时却不起作用。问题是有时$ EncryptedString包含这样的字符:')') 这会导致语法错误。 $ EncryptedString包含二进制数据,我该如何处理这个问题?

3 个答案:

答案 0 :(得分:2)

转义加密字符串

mysql-real-escape-string

  

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) . "')";