$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');
Вы определяете строку, используя одинарные кавычки, и PHP не анализирует строки с разделителями одиночной кавычки. Чтобы получить переменную интерполяцию, вам нужно использовать двойные кавычки или конкатенацию строк (или их комбинацию). См. http://php.net/manual/en/language.types.string.php для получения дополнительной информации.
Также вы должны проверить, что mysql_query вернул действительный ресурс результата, иначе fetch_ *, num_rows и т. д. не будут работать с результатом, поскольку это не результат! IE:
$username = $_POST['username']; $password = $_POST['password']; $result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username'); if( $result === FALSE ) { trigger_error('Query failed returning error: '. mysql_error(),E_USER_ERROR); } else { while( $row = mysql_fetch_array($result) ) { echo $row['username']; } }
http://us.php.net/manual/en/function.mysql-query.php для получения дополнительной информации.
javax.el.PropertyNotFoundException: свойство 'foo' не найдено в типе com.example.Bean
blockquote>Это буквально означает, что упомянутый класс
com.example.Bean
не имеет общедоступный (нестатический!) метод getter для указанного свойстваfoo
. Обратите внимание, что само поле здесь не имеет значения!Имя открытого метода getter должно начинаться с
get
, за которым следует имя свойства, которое имеет заглавные буквы только в первой букве имени свойства, как вFoo
.public Foo getFoo() { return foo; }
Таким образом, вам необходимо убедиться, что существует метод получения, точно соответствующий имени свойства, и что метод
public
(неstatic
) и что метод не принимать любые аргументы и возвращать неvoid
. Если у вас есть один, и он по-прежнему не работает, то есть вероятность, что вы были заняты редактированием кода вперед и назад без прочной очистки сборки, восстановления кода и повторного развертывания / перезапуска приложения. Вы должны убедиться, что вы это сделали.Для свойств
boolean
(неBoolean
!) Имя метода getter должно начинаться сis
вместоget
.public boolean isFoo() { return foo; }
Независимо от типа, наличие самого поля
foo
, таким образом, не имеет значения. Он может иметь другое имя или быть полностью отсутствующим или даже бытьstatic
. Все ниже должно быть доступно${bean.foo}
.public Foo getFoo() { return bar; }
public Foo getFoo() { return new Foo("foo"); }
public Foo getFoo() { return FOO_CONSTANT; }
Понимаете, это не то, что подсчет, но сам метод геттера. Обратите внимание, что само имя свойства не должно быть капитализировано в EL. Другими словами,
${bean.Foo}
никогда не будет работать, это должно быть${bean.foo}
.См. Также:
- javax.el.PropertyNotFoundException: Свойство 'foo' не читается в виде java.lang.Boolean
- Как язык выражения Java решает логические атрибуты? (в JSF 1.2)
- Идентификация и решение javax.el.PropertyNotFoundException: Target Unreachable
- Выведенный код Facelets по-прежнему вызывает EL выражения типа # {bean.action ()} и вызывает javax.el.PropertyNotFoundException на # {bean.action}
Я считаю, что идентификаторы доступа не соответствуют соглашениям об именах бинов, и поэтому исключение выбрано. Они должны быть следующими:
public Integer getId() { return id; }
public void setId(Integer i){ id= i; }
Я столкнулся с аналогичным типом проблемы: Code Snippet:
<c:forEach items="${orderList}" var="xx">
${xx.id} <br>
</c:forEach>
После списка заказов было следующее: «$ {orderList}», из-за чего переменная xx скрывалась в String и не могла вызвать xx.id.
Поэтому убедитесь, что в пространстве. Иногда они играют решающую роль. : Р
EL интерпретирует ${class.name}
как описано - имя становится getName () в предположении, что вы используете явные или неявные методы генерации getter / seters
. Вы можете переопределить это поведение, явно указав имя как функция: ${class.name()}
Это вызывает имя функции () напрямую без изменений.