Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Ошибка при работе.


Автор: Serkys 14.4.2005, 08:18
Собственно, вылазит ошибка. Переносом строк удалось установить, что скрипт встаёт при обработке переменной $_REQUEST['nick']. Не подскажете, в чём может быть дело?
Код

mysql_connect ();
mysql_select_db ('Serkys');
mysql_query ('INSERT INTO users (nick password reg_date) VALUES ($_REQUEST['nick'], $_REQUEST['pass'], date(d.m.y.))');

Автор: IZ@TOP 14.4.2005, 08:23
Serkys, ты посмотри как у тебя код подсвечивается. Думаешь так и должно быть?

Код

mysql_query ("INSERT INTO users (nick password reg_date) VALUES ('{$_REQUEST['nick]}', '{$_REQUEST['pass']}', '".date(d.m.y.)."')");


Я тебе крайне советую про синтаксис составления строк в РНР почитать.

Автор: Serkys 14.4.2005, 13:03
IZ@TOP
Спасибо огромное!
В книге, по которой я учу PHP, написано, что в "" нельзя (или не рекомендуется) заключать sql запросы. И про фигурные скобки в запросах sql в первый раз слышу.
Цитата
Я тебе крайне советую про синтаксис составления строк в РНР почитать.

Надо, надо...

Автор: Serkys 14.4.2005, 13:57
IZ@TOP
Не работает smile smile

Автор: IZ@TOP 14.4.2005, 14:21
Serkys, а ты не пробовал поля запятыми при назначении разделить?
Кстате, на счет фигурных скобок - этими скобками обрамляются массивы, так как в открытую их в тексте писать нельзя - ошибка будет (правда смотря какие индексы).
Код


mysql_query ("INSERT INTO users (nick, password, reg_date) VALUES ('{$_REQUEST['nick]}', '{$_REQUEST['pass']}', '".date(d.m.y.)."')");


Должно работать. Если не поможет, посмотри какие ошибка пишутся:

Код

<?php
error_reporting(E_ALL); // В начало кода

...

if(!mysql_query ("INSERT INTO users (nick, password, reg_date) VALUES ('{$_REQUEST['nick]}', '{$_REQUEST['pass']}', '".date(d.m.y.)."')"))
    echo mysql_error();
...
?>

Автор: Serkys 14.4.2005, 14:50
Цитата
поля запятыми при назначении разделить

Опять же в книге указано без запятых и про запятые ни слова.

С запятыми попробовал - всё-равно не катит.
А ругается не mysql а php:
parse error, unexpected ')' in z:\home\forum.ru\www\script\reg.php on line 15.
Строка 15 - всё та же:
Код

mysql_query ("INSERT INTO users (nick, password, reg_date) VALUES ('{$_REQUEST['nick]}', '{$_REQUEST['pass']}', '".date(d.m.y.)."')");


З.Ы. Для того, чтобы узнать код mysql ошибки достаточно сделать так:
Код

mysql_query ("INSERT INTO users (nick, password, reg_date) VALUES ('{$_REQUEST['nick]}', '{$_REQUEST['pass']}', '".date(d.m.y.)."')")
  or die ("Ошибка: ".mysql_error());

Автор: Serkys 14.4.2005, 15:26
Всё, проблема решена.
Для потомков:
Запомните, функцию date надо писать, заключая в ковычки параметры:
Код

date ("d, m, y.");


IZ@TOP
Объясни пожалуйста смысл апострофов и точек перед и после функции:
Код

'".date("d.m.y.")."'

Зачем их так много?

Автор: IZ@TOP 14.4.2005, 16:50
Serkys, вот блин... ведь не обратил внимание что там кавычек нету smile
Смысл опострофов в том чтобы предотвратить ошибки в интерпретации SQL кода.

Автор: Serkys 14.4.2005, 19:13
Насчёт кавычек.
У меня есть пара мыслей по этому поводу.
' и ' просто выделяют данные, как и все переменные.
Первая " закрывает перепечатывание (или как это сказать) - как в echo конец вывода текста.
Вторая " - открывает то же самое снова.
Две . по краям присоединяют функцию к тексту.
Я прав, или непонятно выразился?

Автор: IZ@TOP 14.4.2005, 22:26
Serkys, в одинарных ковычках переемнные не интерпретируются. точки как ты правильно скзаал присоединяют вывод функции к тексту, это называется конкантенацией.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)