面试题 / 4 / 10 / 创建于 3年前
如题。
只用过字符串转义一种方法
数据类型简单点只有2种(拼接到sql 语句中后)
一种是数字,包含小数,另一种就是字符串,包含日期
这样就简单了, 数字的强制判断转换就行,字符串转义单双引号就好了
使用 Mysql预处理语句就好了。
<?php $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); $stmt->bindParam(':name', $name); $stmt->bindParam(':value', $value); // 插入一行 $name = 'one'; $value = 1; $stmt->execute(); // 用不同的值插入另一行 $name = 'two'; $value = 2; $stmt->execute();
摘自 php.net
上菜 mysql_real_escape_string()
预处理
从服务端:关闭 php.ini 中display_errors为off
从代码角度: 1.使用预编译。 2.使用过滤函数 addslasshes。 3.检测参数类型、格式, 例如整型,字符型, 时间、日期等
过滤前端提交的参数值
在sql查询时使用参数绑定
用PDO驱动,使用Mysql的预处理(prepared)
我要举报该,理由是:
只用过字符串转义一种方法
数据类型简单点只有2种(拼接到sql 语句中后)
一种是数字,包含小数,另一种就是字符串,包含日期
这样就简单了, 数字的强制判断转换就行,字符串转义单双引号就好了
使用 Mysql预处理语句就好了。
上菜 mysql_real_escape_string()
预处理
从服务端:关闭 php.ini 中display_errors为off
从代码角度: 1.使用预编译。 2.使用过滤函数 addslasshes。 3.检测参数类型、格式, 例如整型,字符型, 时间、日期等
过滤前端提交的参数值
在sql查询时使用参数绑定
用PDO驱动,使用Mysql的预处理(prepared)