Я писал запрос 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."'"
Попробуй вот так.