我经常一个接一个地转义输入,我想知道两种方法之间的区别。哪一个是更常见的做法?我首先尝试转义"要求转义"的字段,然后我为每个值编写了很长的转义代码。一次转义整个sql语句有什么缺点?
它不起作用,因为在查询中你使用的东西像'单引号来指示值,你不希望那些转义,但你想转义可能包含单引号的值。
有点离题,但我觉得这很重要。
这不是你第一次问这个问题了。看来你还是没明白我的意思。对不起,这个问题似乎是你的主要问题。你确定mysql不接受转义SQL字符串吗?
而不是寻求理解,而不是寻求解释,你只是在要求某种肯定的答案。
这个问题的结果应该是你给自己的答案,基于你对这件事的理解。只有在这种情况下,它才会对你有好处。否则你会在下一步中再次绊倒。
请试着理解转义字符串的含义。
你的问题对任何有基本SQL知识的人来说都毫无意义。当然,这样的整个查询转义永远不会起作用。只是因为SQL查询的性质。
您迫切需要来理解的这种性质。请读一些书。求你了,求你解释,而不是求你保证。
使用准备好的语句并使用bind参数。其他任何事情都是等待发生的攻击
逐个转义每个输入。如果对整个SQL查询执行此操作,则无法确保SQL语句在转义后仍然有效。我们不写
aaa
用户将输入
a", "a
所以在生成的SQL中你会收到
("a", "a")
不是("aaa")
我认为在这种情况下转义整个SQL语句是行不通的
我猜使用mysql_real_escape_string转义sql字符串更有利。关于时间和记忆。如果需要,可以在每个输入级别进行一些验证。
您担心转义每个变量的代码太长,但由于某种原因您忘记了函数的目的。
function escape_me($value) {
$value = strip_tags($value);
$value = mysql_real_escape_string($value);
.........
}
$var1 = escape_me($_POST['var1']);