我经常逐一逃避输入,我想知道两种方法之间的区别。哪一种更常见?我首先尝试转义“逃避要求”字段,然后我最终为每个值编写长的转义代码。一次转出整个sql语句有什么缺点?
答案 0 :(得分:3)
它不起作用,因为在查询中你使用“单引号”之类的东西来表示值而你不希望那些转义,但你确实想要转义可能包含单引号的值。
答案 1 :(得分:1)
有点偏离主题,但我觉得这非常重要。
这不是你在这个问题上的第一个问题。似乎你仍然没有明白这一点。
你确定mysql不接受转义的sql字符串吗?
我请原谅,但这个问题似乎是你的主要问题 而不是寻求理解,而不是寻找解释,你只是要求某种积极的答案。
根据您对此事的理解,此问题的结果应该是您给自己的答案。
只有在这种情况下它才会对你有益。
否则你将再次绊倒下一步。
请尝试理解逃避字符串的含义 对于拥有非常基本的SQL知识的人来说,你的问题绝对没有意义 当然,这样的整个查询转义将永远不会起作用。仅仅因为SQL查询的性质 你迫切需要来理解这种性质。 请读一些书。 请,请求解释,而不是保证。
答案 2 :(得分:0)
使用预准备语句并使用绑定参数。其他任何东西都是等待发生的黑客
答案 3 :(得分:0)
逐个退出每个输入。如果要对整个SQL查询执行此操作,则无法确保在转义后SQL语句仍然有效。让我们说而不是
aaa
用户将输入
a", "a
所以在生成的SQL中你会收到
("a", "a")
而不是
("aaa")
我认为逃避整个SQL语句在这种情况下不起作用。
答案 4 :(得分:-1)
我想使用mysql_real_escape_string转义sql字符串更有利。关于时间和记忆。如果需要,可以在每个输入级别进行一些验证。
答案 5 :(得分:-1)
您担心转义每个var的长代码但由于某种原因您忘记了函数的用途。
function escape_me($value) {
$value = strip_tags($value);
$value = mysql_real_escape_string($value);
.........
}
$var1 = escape_me($_POST['var1']);
希望这会让你指出正确的方向。