php sprintf()函数让你的sql操作更安全,printf直接输出,注意区别。

jackxiang 2010-3-14 18:53 | |
PHP手册 :

There are 5 monkeys in the tree

本函数用来将字符串格式化。参数 format 是转换的格式,以百分比符号 % 开始到转换字符为止。而在转换的格式间依序包括了

  $bookSQL=sprintf("UPDATE book SET pass=%s WHERE id=%d",

  GetSQLValueString($_POST['list'], "text"),

  GetSQLValueString($_GET['id'],"int"));

  GetSQLValueString 这个函数,可以换成别的函数

  但在sql语句这里用上sprintf()这个函数的话!就相对安全多了,比如id那里我们可以用上%d

  或是有很多sql操作的时候,用上这个

  $Result = $db->query($bookSQL) or die(mysql_error());

  下面加上sprintf这个函数的说明:

  引用

  sprintf

  将字符串格式化。

  语法: string sprintf(string format, mixed [args]...);

  返回值: 字符串

  函数种类: 资料处理

  内容说明

  本函数用来将字符串格式化。参数 format 是转换的格式,以百分比符号 % 开始到转换字符为止。而在转换的格式间依序包括了

  填空字符。0 的话表示空格填 0;空格是默认值,表示空格就放着。

  对齐方式。默认值为向右对齐,负号表向左对齐。

  字段宽度。为最小宽度。

  精确度。指在小数点后的浮点数位数。

  类型,见下表 % 印出百分比符号,不转换。

  b 整数转成二进位。

  c 整数转成对应的 ASCII 字符。

  d 整数转成十进位。

  f 倍精确度数字转成浮点数。

  o 整数转成八进位。

  s 整数转成字符串。

  x 整数转成小写十六进位。

  X 整数转成大写十六进位。

printf直接输出,注意区别:
sprintf:

---------- 调试PHP ----------
<Result><Status>2</Status><Error><Id></Id><Description></Description></Error></Result>
输出完成 (耗时 0 秒) - 正常终止

printf:


---------- 调试PHP ----------
<Result><Status>2</Status><Error><Id></Id><Description></Description></Error></Result>86
输出完成 (耗时 0 秒) - 正常终止

86,是输出了$outStr的长度。
echo $outStr;  //86
printf($upStrOut, $status,$id,$description); //<Result><Status>2</Status><Error><Id></Id><Description></Description></Error></Result>

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2814/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2014-12-9 17:20
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]