Ошибка с присвоением

  • Автор темы web_VIP
  • Дата начала
Статус
Закрыто для дальнейших ответов.
W

web_VIP

#1
Говорит ошибку в 4 строке, типо: "Parse error: syntax error, unexpected '[' in Z:\home\localhost\www\ccs\login.php on line 12"
Код:
$query_old = mysql_query("Select * from users WHERE login='$login'");
if($query_old) {
$old=mysql_fetch_array ($query_old);
$old = old['email'];
};
Не знаю что делать, подскажите...
 

Vadik(R)

Well-known member
12.12.2007
469
0
#2
На 100 процентов не уверен, но на первый взгляд бросилось:
1. WHERE login='".$login."'". (одинарная, двойная, двойная, одинарная, двойная кавычки)
2. $old=$old[/b]. (поставь знак доллара и убери одинарные кавычки)
P. S. Когда учился работать с MySQL, у меня было так.
 
M

MiXOH

#3
В строке
Код:
$old = old['email'];
нехватает знака $ перед переменной old.
Должно быть так:
Код:
$old = $old['email'];
И все будет работать ^_^
 
D

destr

#4
Не стоит делать такое присваивание. Ошибётесь через 50 сток кода. Будете думать что там массив, а там уже его и нет.
 
S

ShadowCoder

#5
destr
+1

$old = old['email'];
- переменная $old после извлечения данных из базы имеет тип "массив". А когда происходит вышеуказанная операция, то переменная меняет свой тип на "строковый" (судя по всему), следовательно, если массив содержал и другие значения - то все они будут потеряны!

P.S.: если из таблицы выбирается одно какое-то поле, то не разумнее ли использовать вместо функции "mysql_fetch_array(...)" - функцию mysql_result(...) ??? :)
так же и в самом запросе указываеть не все поля ("*") - а какое-то одно: "Select `email` from users WHERE ......."
 
G

GOsha

#6
предлагаю сделать так:
Код:
//Делаем запрос

$query_old = mysql_query("Select `email` from users WHERE login=`".$login."`");

//Логин я так понял уникальный - проверяем что такое есть, запрос прошел и результат - одна строка

if(mysql_num_rows($query_old)==1) {

//mysql_fetch_assoc(...) Возвращает ассоциативный массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.
//Также можно получить результ, как и ShadowCoder при помощи mysql_result(...)
//или вашего mysql_fetch_array ($query_old), как кому больше нравится

$old=mysql_fetch_assoc ($query_old);

//Далее мы можем чисто для себя показать в имени переменной, что это поле mail из массива old

$old_mail = $old['email'];
};
Примерно так. На серве не катал - лень. ТАм я думаю все будет довольно просто.
 
Статус
Закрыто для дальнейших ответов.