Php 字符串清理的最佳方法

Php 字符串清理的最佳方法,php,sql-injection,sanitization,Php,Sql Injection,Sanitization,清除此字符串以防止SQL注入的最佳方法是什么 $order_by_str = 'dest ASC'; 编辑 我现在用这个,好像对我有用 $order_by_str = mysql_real_escape_string('dest ASC'); 希望这就是你想要的 给出的答案不能回答问题 虽然没有通用的“字符串清理”方法,但是您可能会注意到给定的字符串是一个非常特殊的字符串。 唯一的净化方法是将其列入白名单 清理此字符串的最佳方法是将两个部分分开,然后根据白名单检查这两个部分 因此,我不想让这

清除此字符串以防止SQL注入的最佳方法是什么

$order_by_str = 'dest ASC';
编辑

我现在用这个,好像对我有用

$order_by_str = mysql_real_escape_string('dest ASC');

希望这就是你想要的

给出的答案不能回答问题

虽然没有通用的“字符串清理”方法,但是您可能会注意到给定的字符串是一个非常特殊的字符串。
唯一的净化方法是将其列入白名单

清理此字符串的最佳方法是将两个部分分开,然后根据白名单检查这两个部分

因此,我不想让这个字符串完整,而是把它放在两个变量中,
$\u GET['orderby']
$\u GET['dir']

所以代码应该是

$allowed = array("dest","foo","whatever");
$key     = array_search($_GET['orderby'], $allowed));
$orderby = $allowed[$key];

$dir     = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC'; 

$query   = "SELECT * FROM t ORDER BY $orderby $dir";

可能重复的可能重复的可能重复的您是否接受用户输入?我很好奇你为什么要担心清理一个常规字符串…不,如果在语句后面加一个“'”并在你使用的脚本后收到一个MySQL错误,我也会收到一个错误。这不是他想要的,也不会清理任何东西。
$allowed = array("dest","foo","whatever");
$key     = array_search($_GET['orderby'], $allowed));
$orderby = $allowed[$key];

$dir     = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC'; 

$query   = "SELECT * FROM t ORDER BY $orderby $dir";