我正在编写一个用于更改用户密码的MYSQL查询。
部分代码是:
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);
中间的线是错误的位置(第56行):
Parse error: syntax error, unexpected T_STRING in /(directory)/changepass.php on line 56
使用的表存储多种属性,仅当行的属性=“Cleartext-Password”时,才是密码行。
该表由freeradius生成,用于授权,因此我无法修改其结构。
我将代码修改为各种样式,例如:
$sqlPasswordQuery = SELECT value FROM `radcheck` WHERE `attribute` = "Cleartext-Password" AND `value` = "{$oldpass}" AND `username` = "{$userid}"
但是PHP仍然不喜欢它。
有人能伸出援助之手吗?非常感谢。
答案 0 :(得分:1)
请求不应该是这样的:
$sqlPasswordQuery = "SELECT value FROM radcheck WHERE attribute = 'Cleartext-Password' AND value = '$oldpass' AND username = '$userid'";
这是基本的php字符串理解。您不能在已经用双引号分隔的字符串中使用双引号。你必须使用另一个字符串分隔符作为简单的引号,或者转义它们(\"
),以便它们直接解释为一个字符。
答案 1 :(得分:0)
您的代码中有两个语法错误。
首先,如果在statemens &&
if((... ) && (...))
,则需要使用括号
if (($newpass == $newpass2) && (strlen($newpass) < 21) && (strlen($newpass) > 5))
然后,您需要在使用相等attribute = 'Cleartext-Password'
所以你的代码看起来像这样
if (($newpass == $newpass2) && (strlen($newpass) < 21) && (strlen($newpass) > 5))
{
$sqlPasswordQuery = "SELECT value FROM radcheck WHERE attribute = 'Cleartext-Password' AND value = '{$oldpass}' AND username = '{$userid}'";
答案 2 :(得分:0)
必须在PHP中引用字符串,因此您应该使用以下内容:
$sqlPasswordQuery = 'SELECT value FROM `radcheck` WHERE `attribute` = "Cleartext-Password" AND `value` = "' . $oldpass . '" AND `username` = "' . $userid . '"';
答案 3 :(得分:0)
$sqlPasswordQuery = "SELECT value FROM `radcheck` WHERE `attribute` = 'Cleartext-Password' AND `value` = '".$oldpass."' AND `username` = '".$userid."'"
试试这样。