PHP не нравится эта T_String. (Ошибка синтаксиса Неожиданная T_STRING)

Я писал запрос 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 

В используемой таблице хранится более одного вида свойств, только если атрибут row = «Cleartext-Password», это строка пароля.

Таблица генерируется freeradius и используется для авторизации, поэтому я не могу изменить ее структуру.

Я изменил код на различные типы стилей, например:

 $sqlPasswordQuery = SELECT value FROM `radcheck` WHERE `attribute` = "Cleartext-Password" AND `value` = "{$oldpass}" AND `username` = "{$userid}" 

Но PHP все равно не нравится.

Может кто-нибудь дать руку? Большое спасибо.

Если запрос не выглядит так:

 $sqlPasswordQuery = "SELECT value FROM radcheck WHERE attribute = 'Cleartext-Password' AND value = '$oldpass' AND username = '$userid'"; 

?

Это базовое понимание php-строки. Вы не можете использовать двойные кавычки в строке, которая уже ограничена двойными кавычками. Су, вам нужно использовать другой разделитель строк, как простые кавычки, или избежать их ( \" ), чтобы они интерпретировались непосредственно как символ.

В коде есть две синтаксические ошибки. Сначала вам нужно использовать скобки, когда вы используете && in, если 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}'"; 

Строка должна быть указана в 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."'" 

Попробуй вот так.