$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 для получения дополнительной информации.
window.name имеет специальную цель и предполагается, что это строка. Кажется, что Chrome явно передал его в строку, поэтому var name = {};
фактически заканчивает тем, что дает глобальную переменную name
(т.е. window.name
) значение "[object Object]"
. Поскольку это примитив, свойства (name.FirstName
) не будут «прилипать».
Чтобы обойти эту проблему, не используйте name
в качестве глобальной переменной.
Ваша name
переменная на самом деле window.name
, поскольку переменные верхнего уровня, объявленные с помощью var
, привязаны к глобальному объекту.
Спецификация HTML5 требует, чтобы window.name
a DOMString
. Это означает, что значение window.name
может быть только последовательностью символов , а не объектом.
В Chrome попытка использовать window.name
для хранения чего-либо, кроме примитивная строка будет принуждать значение к примитивной строке. Например:
window.name = {};
window.name === "[object Object]"; // true
Вы можете избежать этой проблемы, используя переменную name
, которая не находится в области верхнего уровня:
(function() {
var name = {};
// this `name` is not `window.name`
// because we're not in the top-level scope
console.log(name);
})();
window.name
используется для установки имени окна, а так как имя окна может быть только строкой, все, что вы установите на window.name
, преобразуется в строку. И строки, как примитивные значения, не могут иметь свойств. Решение состоит в том, чтобы использовать другое имя переменной или другую область.
В качестве альтернативы вы можете использовать window.name
, как вам нравится, если у вас есть этот код в первую очередь. Я не рекомендую это вообще, но, как доказательство концепции:
(function () {
var _name;
window.__defineGetter__('name', function () {
return _name;
});
window.__defineSetter__('name', function (v) {
_name = v;
});
})();
Кроме того, вместо new Object
вы должны использовать {}
. Кроме того, что он более краток, он также более эффективен и более ясен.