PHP没有';我不喜欢这根绳子。(意外的T_字符串语法错误)
我正在编写一个MYSQL查询,用于更改用户密码 守则的一部分是:PHP没有';我不喜欢这根绳子。(意外的T_字符串语法错误),php,mysql,Php,Mysql,我正在编写一个MYSQL查询,用于更改用户密码 守则的一部分是: if ($newpass == $newpass2 && strlen($newpass) < 21 && strlen($newpass) > 5) { $sqlPasswordQuery = "SELECT value FROM radcheck WHERE attribute = "Cleartext-Password" AND value = "{$oldpass}" AND u
if ($newpass == $newpass2 && strlen($newpass) < 21 && strlen($newpass) > 5) {
$sqlPasswordQuery = "SELECT value FROM radcheck WHERE attribute = "Cleartext-Password" AND value = "{$oldpass}" AND username = "{$userid}"";
$oldPasswordResult = mysql_query($sqlPasswordQuery);
仅当一行的属性为“明文密码”时,所使用的表才存储多种属性
该表由freeradius生成,用于授权,因此我无法修改其结构
我将代码修改为各种样式,例如:
$sqlPasswordQuery = SELECT value FROM `radcheck` WHERE `attribute` = "Cleartext-Password" AND `value` = "{$oldpass}" AND `username` = "{$userid}"
但是PHP仍然不喜欢它
有人能帮忙吗?非常感谢。您的代码中有两个语法错误。 首先,当您在if语句中使用
&&
时,需要使用括号if(…)&&(…)
字符串必须在PHP中引用,因此您应该使用如下内容:
$sqlPasswordQuery = 'SELECT value FROM `radcheck` WHERE `attribute` = "Cleartext-Password" AND `value` = "' . $oldpass . '" AND `username` = "' . $userid . '"';
请求不应该是这样的吗:
$sqlPasswordQuery = "SELECT value FROM radcheck WHERE attribute = 'Cleartext-Password' AND value = '$oldpass' AND username = '$userid'";
?
这是基本的php字符串理解。不能在已由双引号分隔的字符串中使用双引号。Sou您必须使用另一个字符串分隔符作为简单引号,或对其进行转义(\“
),以便将其直接解释为字符
$sqlPasswordQuery = "SELECT value FROM `radcheck` WHERE `attribute` = 'Cleartext-Password' AND `value` = '".$oldpass."' AND `username` = '".$userid."'"
像这样试试。Eh……它不起作用,因为在PHP中不是这样处理字符串的。请阅读一些PHP教程。此外,您的代码容易受到SQL注入的影响。请使用准备好的语句!”我将代码修改为各种样式,例如:“你真的不应该到处尝试,直到你找到一些在编程方面有效的东西。找一本关于语言的手册,读一读-1。此外,您还应该阅读一些有关SQL中字符串分隔方式的内容。提示:它不是用
“
”-1:Eh,SQL中的双引号?真的吗?尽管你可以使用它,但一定要按照@thejh的评论检查SQL注入。正如他所说,最佳做法是使用准备好的语句。你不需要括号:if((…)&(…)
和if(…&&&…)
的工作原理完全相同。这实际上是毫无意义地过度添加括号。当且仅当&&
和|
处于同一级别时才有必要这样做。
$sqlPasswordQuery = 'SELECT value FROM `radcheck` WHERE `attribute` = "Cleartext-Password" AND `value` = "' . $oldpass . '" AND `username` = "' . $userid . '"';
$sqlPasswordQuery = "SELECT value FROM radcheck WHERE attribute = 'Cleartext-Password' AND value = '$oldpass' AND username = '$userid'";
$sqlPasswordQuery = "SELECT value FROM `radcheck` WHERE `attribute` = 'Cleartext-Password' AND `value` = '".$oldpass."' AND `username` = '".$userid."'"