SQL代码如何随机抽取写给闺蜜的一段话话中的字符。

当前位置 &
SQL教程:如何解决SQL语句中含有中文字符无法查询
SQL教程:如何解决SQL语句中含有中文字符无法查询
&&& 很多的朋友在写JDBC的是时候,遇见了因为在SQL语句中含有中文无法运行的情况,今天给大家解决下这个问题,下面把代码展示一下:
package oop.hu.ytu.
import java.sql.C
import java.sql.PreparedS
import java.sql.ResultS
import oop.hg.ytu.beans.LoginB
import oop.hg.ytu.utils.JdbcU
&* 处理用户登录请求
&* @author Administrator
public class LoginDomain {
&public LoginBean select(String tableName,String username){
&&Connection con =
&&PreparedStatement pt =
&&ResultSet rs =
&&LoginBean bean = new LoginBean();
&&&username = &\&&+username+&\&&;
&&&con = JdbcUtils.getConnection();
&&&String sql = &select name,password from &+tableName+& where name=&+username+&&;
&&&pt = con.prepareStatement(sql);
&&//&pt.setString(1, tableName);
&&//&pt.setString(2, u);
&&&rs = pt.executeQuery();
&&&while(rs.next()){
&&&&bean.setUsername(rs.getString(&name&));
&&&&bean.setPassword(rs.getString(&password&));
&&} catch (Exception e) {
&&&throw new RuntimeException(e);
&&}finally{
&&&JdbcUtils.free(rs, pt, con);
username = &\&&+username+&\&&;这句话是进行字符串处理,加上双引号。String sql = &select name,password from &+tableName+& where name=&+username+&&;
&&& 这句话是重点,一定不能使用PreparedStatement提供的字符串处理方法,一定要直接自己拼接出字符串来运行,这样对于中文的处理就没问题了;
&&& 大家赶紧试一试吧!
视频教程列表
文章教程搜索
输入您的搜索字词
提交搜索表单
Sql Server推荐教程
tel:<font color="#FF30058当前位置:&>&&>&&>&
php过滤特殊字符sql防注入代码
发布时间:编辑:
分享一例php过滤特殊字符与防止sql注入的代码,有需要的朋友参考下。
例子,在php中对过滤,防。
复制代码 代码示例:
//过滤',&,sql语名
addslashes();
//方法二,去除所有html标签
strip_tags();
//方法三过滤可能产生代码
function php_sava($str)
&&& $farr = array(
&&&&&&& &/s+/&,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&& &/&(/?)(script|i?frame|style|html|body|title|link|meta|?|%)([^&]*?)&/isU&,&&
&&&&&&& &/(&[^&]*)on[a-zA-Z]+s*=([^&]*&)/isU&,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&& $tarr = array(
&&&&&&& & &,
&&&&&&& &<>&, //如果要直接清除不安全的标签,这里可以留空
&&&&&&& &&,
$str = preg_replace( $farr,$tarr,$str);
&& return $
//php sql防注入代码
class sqlin
//dowith_sql($value)
function dowith_sql($str)
&& $str = str_replace(&and&,&&,$str);
&& $str = str_replace(&execute&,&&,$str);
&& $str = str_replace(&update&,&&,$str);
&& $str = str_replace(&count&,&&,$str);
&& $str = str_replace(&chr&,&&,$str);
&& $str = str_replace(&mid&,&&,$str);
&& $str = str_replace(&master&,&&,$str);
&& $str = str_replace(&truncate&,&&,$str);
&& $str = str_replace(&char&,&&,$str);
&& $str = str_replace(&declare&,&&,$str);
&& $str = str_replace(&select&,&&,$str);
&& $str = str_replace(&create&,&&,$str);
&& $str = str_replace(&delete&,&&,$str);
&& $str = str_replace(&insert&,&&,$str);
&& $str = str_replace(&'&,&&,$str);
&& $str = str_replace(&&&,&&,$str);
&& $str = str_replace(& &,&&,$str);
&& $str = str_replace(&or&,&&,$str);
&& $str = str_replace(&=&,&&,$str);
&& $str = str_replace(&%20&,&&,$str);
&& //echo $
&& return $
//aticle()防SQL注入函数//
function sqlin()
&& foreach ($_GET as $key=&$value)
&&&&&& $_GET[$key]=$this-&dowith_sql($value);
&& foreach ($_POST as $key=&$value)
&&&&&& $_POST[$key]=$this-&dowith_sql($value);
$dbsql=new sqlin();
使用方式:
将以上代码复制新建一个sqlin.php的文件,然后包含在有GET或者POST数据接收的页面
原理分析:
将所有的SQL关键字替换为空
本代码在留言本中不能使用,若要在留言本中使用请替换其中的
$str = str_replace(&and&,&&,$str);
$str = str_replace(&%20&,&&,$str);
复制代码 代码示例:
$str = str_replace(&and&,&&#97;nd&,$str);
$str = str_replace(&execute&,&&#101;xecute&,$str);
$str = str_replace(&update&,&&#117;pdate&,$str);
$str = str_replace(&count&,&&#99;ount&,$str);
$str = str_replace(&chr&,&&#99;hr&,$str);
$str = str_replace(&mid&,&&#109;id&,$str);
$str = str_replace(&master&,&&#109;aster&,$str);
$str = str_replace(&truncate&,&&#116;runcate&,$str);
$str = str_replace(&char&,&&#99;har&,$str);
$str = str_replace(&declare&,&&#100;eclare&,$str);
$str = str_replace(&select&,&&#115;elect&,$str);
$str = str_replace(&create&,&&#99;reate&,$str);
$str = str_replace(&delete&,&&#100;elete&,$str);
$str = str_replace(&insert&,&&#105;nsert&,$str);
$str = str_replace(&'&,&&#39;&,$str);
$str = str_replace(&&&,&&#34;&,$str);
-------------------------------------------------------
addslashes -- 使用反斜线引用字符串
string addslashes ( string str )
返回字符串,该字符串为了查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(&)、反斜线(\)与 NUL(NULL 字符)。
一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。
默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
get_magic_quotes_gpc()
本函数取得 PHP 环境配置的变量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示关闭本功能;返回 1 表示本功能打开。当 magic_quotes_gpc 打开时,所有的 ' (单引号), & (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的溢出字符。
addslashes与stripslashes是php中对数据库的字符进行操作时.
乍一看好像很难记,但是只要分析一下,add是增加,strip是忽略.slash是斜线,slash就是斜线的复数.那么addslashes就是增加斜线的意思,因为有些特殊的字符写入数据库后会出现问题,比如& '等,所以要加\给特殊符号转义,告诉数据库那些特殊符号是字符串,同理stripslashes是从数据库取出字符串时就要减去斜线了.
htmlspecialchars把某些特殊字符转换成html的编码,常用到的场合可能就是处理客户留言的留言版了。
这些特殊字符仅限于以下几个:
htmlentities跟htmlspecialchars的功能类似,但是htmlentities是对所有HTML定义的entity都不放过,包括各种特殊字符和中文,这样得出来的结果是中文字符部分变为一堆。
htmlspecialchars_decode是htmlspecialchars的逆向过程,把html的成字符。
与 php过滤特殊字符sql防注入代码 有关的文章
本文标题:
本页链接:
123456789101731人阅读
最近在做对于用户行为的数据分析,由于用户数据记录数据量很大,需要取50000个用户记录作为样本,为了数据分析出来的结果与整体数据偏差较小,我们需要使用抽样的方法从总量用户中随机抽取50000个样本记录。&&& 现在介绍两种抽样方法:&&& 1.使用Sql Server中随机函数Rand([Seed])返回0-1之间float随机值,seed为int型种子值可以省略。&&&&& 这个函数使用的时候如果省略seed参数rand()则每次都返回一个随机数,如果使用带有seed参数的rand(seed)则每次都返回相同的随机数,只有seed的值发生变化才能改变随机数的值。&&&&& 例如:&&&&&&&&& select rand() from test,假如test中有100条数据,则会生成100个随机数.&&&&&&&&& select rand(1) from test,则生成100个相同的随机数。&&&&&&&&& 所以在程序中最好改变种子seed的值:&&&&&&&&&&& declare @count int&&&&&&&&&&& set @count=1&&&&&&&&&&& while @count&5&&&&&&&&&&&&&& select rand(@count) from test&&&&&&&&&&&&&& set @count=@count+1& & & & & 这样就会生成5个不同的随机数。&&&&& 介绍了这个基本概念,我们现在假设表user保存的是所有用户记录,记录总数为100万,表中有一个userid表示用户的ID唯一值,从这个表中抽取5万的样本,如何来做这件事那.&&&&& 首先创建两个临时表,第一个表名为user_total,其中有三列,第一列为自增长ID字段,第二列为用户ID字段,第三列为是否为样本记录列,我们要将100W个用户ID(userid)插入到user_total表中,插入后自增长ID字段也就生成完了,再创建第二个表,名为user_rand,这个表里面只有一列为随机数列,用户使用rand()生成5W个范围为1-100W的随机数,插入到user_rand表中,之后在通过这个随机数查找出user_total第一列自增长ID对应的userid,并把user_total第三列标识为已被抽中。&&&& 这里面可以使用rand()方式,也可以使用上面提到的提供seed循环来生成一组随机数,但是其实这里面有一个问题,select rand() from test 生成的随机数是有可能重复的,谁也没有说随机数就不能重复了,所以5W个随机数中是有重复的,所以这种方法不太可取,使用rand(seed)方式可以提供不同的seed来避免生成重复的随机数,但是有一个问题如果rand(seed)这种方式可能会对随机数产生一定偏移,也不太可取。所以下面介绍另一种方法2.使用Sql Server NewID()函数:&&& NewID()返回一个GUID值(全局唯一标识),这个值不会重复,它根据硬件的标识码和时间进行计算得到的一个全局的唯一字符串,如果能利用它作为随机抽样,将对样本的随机性有很好的提高。&& 例如抽去50000个用户ID(userid):&&& select top 50000 userid from user_total order by newid()& 这个语句刚一看有点不太明白,首先我们要清楚这条语句是先对user_total所以数据进行排序,按照newid()为每一行生产的GUID值排序,排序之后抽取前50000条记录。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:199773次
积分:2183
积分:2183
排名:第9522名
原创:31篇
转载:70篇
评论:41条
(1)(1)(15)(15)(38)(6)(4)(8)(10)(2)(1)}

我要回帖

更多关于 胡文海最后一段话视频 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信