将字符串作为参数传递给函数时使用双引号与单引号

时间:2010-09-20 16:38:33

标签: php mysql quotes

我有一个非常奇怪的问题,这不是一个真正的问题,因为我已修复但仍然, 当我尝试使用:

连接到mysql数据库时
mysql_connect("server", "user", "pass") or die(mysql_error());

我得到:

  

用户'用户'@'服务器'拒绝访问(使用密码:是)

但是当我将密码周围的引号更改为单引号时:

mysql_connect("server", "user", 'pass') or die(mysql_error());

它运作得很好。 我没有在另一台服务器上遇到此问题。 所以也许它是mysql设置或php.ini中的东西?

感谢。

2 个答案:

答案 0 :(得分:7)

密码中必须有$

这将导致php在字符串中插入变量。

您可能还有一个转义序列,例如密码中的\t,这会导致类似的问题。

查看手册以获取更多信息:

http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing

答案 1 :(得分:2)

您的密码是否包含$等特殊字符?在双引号中,PHP将尝试解释变量。因此,"My$Password"将在PHP中产生一个名为$Password的变量,而这个变量不存在。因此,生成的密码字符串将只是My。 (如果您已启用显示E_NOTICE错误,则应获取错误。)

此外,\n等特殊字符序列在双引号内解释。