首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

插入blob不起作用(mysql_real_escape_string)

插入blob不起作用(mysql_real_escape_string)是一个关于MySQL数据库中插入二进制大对象(BLOB)时使用mysql_real_escape_string函数无效的问题。

答案如下:

问题描述:

在MySQL数据库中,当我们尝试使用mysql_real_escape_string函数来转义二进制大对象(BLOB)数据并插入到数据库中时,可能会遇到无效的情况。

解决方案:

  1. 使用预处理语句(Prepared Statements):预处理语句是一种在执行SQL语句之前将参数绑定到占位符的方法。通过使用预处理语句,可以避免使用mysql_real_escape_string函数来转义数据,从而解决插入BLOB不起作用的问题。以下是一个示例代码:
代码语言:php
复制
$stmt = $mysqli->prepare("INSERT INTO table_name (blob_column) VALUES (?)");
$stmt->bind_param("b", $blobData);
$stmt->send_long_data(0, $blobData);
$stmt->execute();
  1. 使用base64编码:将BLOB数据转换为base64编码的字符串,然后插入到数据库中。在读取数据时,再将base64编码的字符串转换回BLOB数据。这种方法可以避免使用mysql_real_escape_string函数,但需要在存储和读取数据时进行编码和解码操作。
  2. 使用其他数据库驱动程序或ORM框架:如果mysql_real_escape_string函数无效,可以尝试使用其他数据库驱动程序或ORM框架,如PDO、Doctrine等。这些工具通常提供更好的数据转义和插入BLOB的支持。

总结:

插入BLOB不起作用(mysql_real_escape_string)是一个关于使用mysql_real_escape_string函数插入二进制大对象(BLOB)数据时无效的问题。为了解决这个问题,可以使用预处理语句、base64编码或其他数据库驱动程序或ORM框架来插入和读取BLOB数据。具体选择哪种方法取决于具体的需求和技术栈。

腾讯云相关产品和产品介绍链接地址:

腾讯云提供了多种与数据库相关的产品和服务,包括云数据库MySQL、云数据库MariaDB、云数据库SQL Server等。您可以通过以下链接了解更多信息:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Java向Oracle数据库表中插入CLOB、BLOB字段

    操作场景 主要有三种场景: 仅对已知表中的某一字段写入Blob和Clob字段的值 更新已知表中全部字段的值(均为Blob和Clob字段) 插入数据中带有部分需要插入Blob和Clob字段的数据 总结来看...插入时带Blob和Clob字段 情景再现: 从数据源接收数据,解析完成后产生SQL语句并批量插入数据表,注意,原记录中含有若干个Blob字段(图片编码)和若干个Clob字段(记录信息),其余字段均为一般类型...(String,Integer) 在给出代码前,注意几点: Blob和Clob需要单独处理,即一个SQL语句无法完成上述需求 整个过程分为三部分:组装SQL语句、第一遍插入、第二次插入Blob和Clob...类型 组装SQL语句时:Blob需要人为empty_blob(),置空为Clob需要人为置空为empty_clob() 每次插入都需要对特殊字段进行处理,故无法使用batch操作 特殊字段处理(第二次插入...empty_blob() 如何通过主键值来进行第二次插入 如何插入Blob和Clob字段 如果你有更好的方法或者是对该文章有任何的疑问或想法,请在下方留言,我会第一时间回复的!

    6.5K10

    八年phper的高级工程师面试之路八年phper的高级工程师面试之路

    公司1: 1、mysql_real_escape_string mysql_escape_string有什么本质的区别,有什么用处,为什么被弃用?...答:mysql_real_escape_string需要预先连接数据库,并可在第二个参数传入数据库连接(不填则使用上一个连接) 两者都是对数据库插入数据进行转义,但是mysql_real_escape_string...再问:内存比较宝贵,在不用内存加锁的情况下怎么办,并且如果碰到1亿奖池的情况,预先插入数据库肯定不好,怎么办?...流程如下: begin 查询用户抽奖次数,加排他锁 对用户抽奖次数的更新/插入 锁行查询发放情况 获得抽奖结果(某些奖品发完之后,动态变更概率) 更新发放表 插入中奖记录 commit 再问:遇到脏读怎么办...答:O(log(n)),O(1) 因为哈希表是散列的,在遇到`key`>'12'这种查找条件时,不起作用,并且空间复杂度较高。

    2K20

    八年phper的高级工程师面试之路八年phper的高级工程师面试之路

    公司1: 1、mysql_real_escape_string mysql_escape_string有什么本质的区别,有什么用处,为什么被弃用?...答:mysql_real_escape_string需要预先连接数据库,并可在第二个参数传入数据库连接(不填则使用上一个连接) 两者都是对数据库插入数据进行转义,但是mysql_real_escape_string...再问:内存比较宝贵,在不用内存加锁的情况下怎么办,并且如果碰到1亿奖池的情况,预先插入数据库肯定不好,怎么办?...流程如下: begin 查询用户抽奖次数,加排他锁 对用户抽奖次数的更新/插入 锁行查询发放情况 获得抽奖结果(某些奖品发完之后,动态变更概率) 更新发放表 插入中奖记录 commit 再问:遇到脏读怎么办...答:O(log(n)),O(1) 因为哈希表是散列的,在遇到`key`>’12’这种查找条件时,不起作用,并且空间复杂度较高。

    98400

    代码审计与渗透测试

    是恶意攻击者往web页面里插入恶意html代码,当用户浏览该页时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS分为存储型xss和反射型,基于DOM的跨站脚本XSS。...【存储型】 存储型XSS审计和反射型XSS审计思路差不多,不过存储型XSS会在数据库“中转”一下,主要审计sql语句update,insert更新和插入。 进行审计前,先进行黑盒测试。 ? ?...( message ); // Sanitize name input name = mysql_real_escape_string( name ); // Update database...mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符 受影响字符 \x00 \n \r \ ' " \x1a 如果成功,则该函数返回被转义的字符串...最后给插入数据库。这个时候我们去数据库看一下,如下图,可以看到xss代码已经插入数据库了,这也就是存储型XSS与反射性XSS的区别。

    1.4K30

    二次注入简单介绍

    注入的字符先存入到数据库中,而当我们再次调用这个恶意构造的字符时就可以触发SQL注入,这一种注入在平时并不常见,但是确实是存在的一种注入,故此在这里将其单独拎出来说一下 注入原理 二次注入的原理是在第一次进行数据库插入数据的时候...但是数据本身还是脏数据,在将数据存入到了数据库中之后开发者就认为数据是可信的,在下一次进行需要进行查询的时候直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入,比如在第一次插入数据的时候...,数据中带有单引号,直接插入到了数据库中然后在下一次使用中在拼凑的过程中就形成了二次注入: 总结起来二次注入其实是分为两个步骤: 插入恶意数据 引用恶意数据 注入思路 二次排序注入思路: 1、黑客通过构造数据的形式在浏览器或者其他软件中提交.../sql-connections/sql-connect.php"); function sqllogin(){ $username = mysql_real_escape_string...$pass= mysql_real_escape_string($_POST['password']); $re_pass= mysql_real_escape_string($_POST['

    19110

    bwapp之sql注入_sql注入语句入门

    High 采用了mysql_real_escape_string()函数来防御 mysql_real_escape_string() 函数 转义 SQL 语句中使用的字符串中的特殊字符。...Medium&High Medium和High级别分别采用了addslashed()和mysql_real_escape_string()来过滤特殊字符: 但是这是整数型注入, 对于字符型注入的防御策略并不起作用...Medium&High 分别用了addslashes()和mysql_real_escape_string()函数防御: 且在Medium中, mysql编码为utf-8, 无法用宽字节绕过, 安全。...title=Iron%' and 1=1 %23 也可以在sqli_10-1.php搜索框注入: Iron%' and 1=1 # Medium&High 分别用了addslashes()和mysql_real_escape_string...在将blog内容以及时间作者等插入数据库的过程中, 肯定用到了insert语句, 对应的就可以采用 sql注入; 2. 观察插入之后的内容, 被写入到网页中, 这里就类似与存储型XSS。

    8.4K30

    Mysql资料 数据类型(上)

    int(m)里的m是表示SELECT查询结果集中的显示宽度 浮点型 设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6...整数部分最大是3位,如果插入数12.123456,存储的是12.1234,如果插入12.12,存储的是12.1200. 定点数 浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。...varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。 二进制数据 1...._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。 2._BLOB存储的数据只能整体读出。 3.

    1.2K20

    php宽字节注入,宽字节注入详解

    前言 在mysql中,用于转义的函数有addslashes,mysql_real_escape_string,mysql_escape_string等,还有一种情况是magic_quote_gpc...addslashes编码之后带入了‘\’ 1、root%df%5C%27%20or%201=1%23 2、带入mysql处理时使用了gbk字符集 %df%5c->運成功的吃掉了%5c %27->‘单引号成功闭合 执行了插入的...同时配套的过滤函数为mysql_real_escape_string()。...上面代码中列出了几个过滤的函数,他们之间的区别就是mysql_real_escape_string()会根据mysql对象中的mysql->charset属性来对待传入的字符串,因此可以根据当前字符集来进行过滤...Mysql编码与过滤函数推荐使用mysql_real_escape_string(),mysql_set_charset()。 转编码函数同样会引起宽字节注入,即使使用了安全的设置函数。

    3.5K10

    Web安全Day2 - XSS跨站实战攻防

    点击下面的修改即可成功应用 下面开始使用这个默认的JS脚本进行XSS,复制一下js地址https://aixic.cn/XXXSSS/template/default.js 在DVWA中插入试试...script>他会自己补全,所以就不用输入 2.5.2.2 XSS(Stored) 攻击代码alert(document.cookie),直接留言板插入即可没有过滤...,text='"; $sql .= mysql_real_escape_string(htmlspecialchars( $_POST["text"]))."'...如果我们将一个utf8mb4字符插入到utf8编码的列中,那么在mysql的非strict mode下,他的做法是将后面的内容截断。截断的话,就能绕过很多富文本过滤器了。...比如,插入两个评论<img src=1,和onerror=alert(1)//,这二者都不会触发某些富文本过滤器(因为前者并不含有白名单外的属性,后者并不是一个标签),但两个评论如果存在于同一个页面,就会拼接成一个完整的

    1.4K40
    领券