为什么这个查询有。?

时间:2010-01-19 07:07:45

标签: php

我想知道为什么以下查询有。和“”在“。$ _ POST ['date']。”等

$query = "INSERT INTO eventcal ('eventDate','eventTitle','eventContent','user',
'user_id') VALUES('".$_POST['date']."','".addslashes($_POST['eventTitle'])."',
'".addslashes($_POST['eventContent'])."')";     

如果我更改为以下内容,是否会有任何差异?

VALUES('$_POST['date']','addslashes($_POST['eventTitle'])',
'addslashes($_POST['eventContent'])')

提前致谢。

4 个答案:

答案 0 :(得分:2)

它是PHP形式的连接(引号标记字符串的结尾)。在JavaScript和许多其他语言中,它是连接的+字符。

echo "hello" . " " . "world!"; // Outputs 'hello world'

是的,做出这种改变会大大改变其含义。

最后,这会对严重的 SQL注入攻击开放,因为date未正确转义。

始终清理您的输入并尽可能使用参数化查询。

答案 1 :(得分:1)

“dot”运算符是PHP的字符串连接运算符。我认为使用addslashes函数比第一个示例中的函数更好,但是您仍然需要使用字符串连接,因为PHP的字符串插值仅支持变量。

答案 2 :(得分:1)

单引号禁止变量插值,并且数组索引中使用的单引号也会终止字符串。

另外,使用支持查询参数化的库,而不是像这样添加值。

答案 3 :(得分:0)

是的,只有变量用双引号解析,这意味着你的函数不会在第二个代码块中执行。