• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

web_VIP

Говорит ошибку в 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'];
};

Не знаю что делать, подскажите...
 
V

Vadik(R)

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

MiXOH

В строке
Код:
$old = old['email'];

нехватает знака $ перед переменной old.
Должно быть так:
Код:
$old = $old['email'];

И все будет работать ^_^
 
D

destr

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

ShadowCoder

destr
+1

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

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

GOsha

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

$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'];
};
Примерно так. На серве не катал - лень. ТАм я думаю все будет довольно просто.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!