SQL中的intval和db_escape有什么区别?

时间:2011-05-12 16:11:50

标签: mysql sql sql-injection

我有朋友告诉我改变一些代码。

其中一个告诉我将我的代码更改为:

intval($_GET['id']);

另一个告诉我改为:

db_escape($_GET);

谁是对的,为什么?

1 个答案:

答案 0 :(得分:2)

Intval专门针对数字。使用intval,您可以将任何非有效数字转换为“0”。使用db_escape(),您可以准备要插入数据库的字符串和其他内容。 所以两者都是正确的,这取决于你想要插入什么:-)如果你想插入一个数字或者你想要选择一个带有id的条目

$query = "SELECT * FROM table WHERE id = " . intval($GET_["id"]);

然后你应该使用intval。如果要插入文本,则应使用db_escape。

$query = "INSERT INTO table (stringCol) VALUES('" . db_escape($_POST['string']) . "')";