Пытаюсь сохранить данные из формы в БД (MySQL), но при отправке на сервер выскакивает ошибка... Вот листинг формы (form.html): <html> <head> <title> Сохраняем данные в БД </title> </head> <BODY> <FORM ACTION="http://127.0.0.1/ST/HandleForm.php" METHOD=POST> First Name<INPUT TYPE=TEXT NAME="Array[FirstName]" SIZE=20xBR> Last Name<INPUT TYPE=TEXT NAME*11 Array [LastName]" SIZE=40xBR> E-mail Address<INPUT TYPE=TEXT NAME*"Array" SIZE=60xBR> Comments<TEXTAREA NAME="Array[Comments]" ROWS=5 COLS=40></TEXTAREA> <input type="submit" value="Отправить"> </form> </body> </html> [/b] А вот скрипта(HandleForm.php): [b]<HTML> <HEAD> <TITLE>Inserting Data into a Database</TITLE> </HEAD> <BODY> <?php /* Эта страница получает и обрабатывает данные, принятые от "form.html". */ // Удаление пробелов в начале и в конце строк. $Array["FirstName"] = trim ($Array["FirstName"]); $Array["LastName"] = trim ($Array["LastName"]); $Array[" Email"] = trim (-$Array[ "Email"] ); $Array["Comments"] = trim ($Array["Comments"]); // Установка значения переменных для доступа к базе данных. $Host = "localhost"; Извлечение данных ТВУ $User = "user"; $Password = "234567"; $DBName = "NewDatabase"; $TableName = "Feedback"; $Link = raysql_connect ($Host, SUser, $234567); $Query = "INSERT into $TableName values ("0", "$Array[FirstName]", "$Array[LastName]", "$Array[Email]", "$Array[Comments]")"; print ("The query is:<BR>$Query<P>\n"); if (mysql_db_query (SDBName, $Query, $Link)) { print ("The query was successfully executed!<BR>\n"); } else { print ("The query could not be executed!<BR>\n"); } mysql_close ($Link); ?> </BODY> </HTML>[/b] При отправке выскакивает во что: [b]Parse error: syntax error, unexpected T_STRING in C:\Program Files\Apache Group\Apache2\htdocs\ST\HandleForm.php on line 18[/b] Подскажите, пожалуйста в чём ошибка? И что значит [b]on line 18[/b]? То, что ошибка в 18 строчке сверху в скрипте? Какая значит строчка?
Уважаемый для начала от форматируйте код. Во вторых в Вашем коде куча ошибок начиная с банальных, вместо знака доллара $ пишите S, вместо переменной $Password = "234567"; пишите $Link = raysql_connect ($Host, SUser, $234567); НЕТ ТАКОЙ ФУНКЦИИ raysql_connect , вот правильная MySQL_CONNECT
Вот скрипт поправил: <HTML> <HEAD> <TITLE>Inserting Data into a Database </TITLE> </HEAD> <BODY> <?php /* Эта страница получает и обрабатывает данные, принятые от "form.html". */ // Удаление пробелов в начале и в конце строк. $Array["FirstName"] = trim ($Array["FirstName"]); $Array["LastName"] = trim ($Array["LastName"]); $Array["Email"] = trim ($Array[ "Email"] ); $Array["Comments"] = trim ($Array["Comments"]); // Установка значения переменных для доступа к базе данных. $Host = "localhost"; $User = "root"; $Password = "Password"; $DBName = "NewDatabase"; $TableName = "Feedback"; $Link = MySQL_CONNECT ($Host, $User, $Password); $Query = INSERT into $TableName values ("0", "$Array[FirstName]", $Array[LastName]", "$Array", $Array["Comments]"); print ("The query is:<BR>$Query<P>\n"); if (mysql_db_query ($DBName, $Query, $Link)) { print ("The query was successfully executed!<BR>\n"); } else { print ("The query could not be executed!<BR>\n"); } mysql_close ($Link); ?> </BODY> </HTML>[/b] Но всё равно не работает... Вот такую ошибку дает: [u]Parse error: syntax error, unexpected T_STRING in C:\Program Files\Apache Group\Apache2\htdocs\ST\HandleForm.php on line 18[/u] И что значит отформатировать?? Как это?
Во первых форму ввода исправь вот так: HTML: <html> <head> <title> Сохраняем данные в БД </title> </head> <BODY> <FORM ACTION="http://127.0.0.1/ST/HandleForm.php" METHOD=POST> First Name<INPUT TYPE=TEXT NAME="FirstName" SIZE=20><br> Last Name<INPUT TYPE=TEXT NAME="LastName" SIZE=40><br> E-mail Address<INPUT TYPE=TEXT NAME="Email" SIZE=60><br> Comments<TEXTAREA NAME="Comments" ROWS=5 COLS=40> </TEXTAREA> <input type="submit" value="Отправить"> </form> </body> </html> Вот этот код отформатирован BBCode так его гораздо лучше читать чем все сплошняком! PHP: <?php // Удаление пробелов в начале и в конце строк. $FirstName = trim ($_POST['FirstName']); $LastName = trim ($_POST['LastName']); $Email = trim ($_POST[ 'Email'] ); $Comments = trim ($_POST['Comments']); // Установка значения переменных для доступа к базе данных. function db($sql) { if (!isset($GLOBAL['DB_LINK'])){ $hostname = 'localhost'; //Хост $username = 'root'; //Логин $pass = ''; //пароль $db = ''; //Имя базы $GLOBAL['DB_LINK'] = mysql_connect("$hostname", "$username", "$pass"); //соединение с mySQL mysql_select_db("$db", $GLOBAL['DB_LINK']); //выбор бд mysql_query ("SET NAMES cp1251"); //кодировка } $result = mysql_query($sql) or die(mysql_error() . "\n<br>\n" . $sql); // Выполняем SQL запрос return $result; } $sql = ("INSERT into ".$TableName." values ('', '".$_POST['FirstName']."','".$_POST['LastName']."', '".$POST['Email']."', '".$_POST['Comments']."'"); $result = db($sql); ?>
Спасибо, уже люблю этот форум Исправил всё, ввел пароль и название базы данных: PHP: <?php // Удаление пробелов в начале и в конце строк. $FirstName = trim ($_POST['FirstName']); $LastName = trim ($_POST['LastName']); $Email = trim ($_POST[ 'Email'] ); $Comments = trim ($_POST['Comments']); // Установка значения переменных для доступа к базе данных. function db($sql) { if (!isset($GLOBAL['DB_LINK'])){ $hostname = 'localhost'; //Хост $username = 'root'; //Логин $pass = '9999245'; //пароль $db = 'New'; //Имя базы $GLOBAL['DB_LINK'] = mysql_connect("$hostname", "$username", "$pass"); //соединение с mySQL mysql_select_db("$db", $GLOBAL['DB_LINK']); //выбор бд mysql_query ("SET NAMES cp1251"); //кодировка } $result = mysql_query($sql) or die(mysql_error() . "\n<br>\n" . $sql); // Выполняем SQL запрос return $result; } $sql = ("INSERT into ".$TableName." values ('', '".$_POST['FirstName']."','".$_POST['LastName']."', '".$POST['Email']."', '".$_POST['Comments']."'"); $result = db($sql); ?> Теперь имеется 2 вопроса: 1) Для создания новой базы данных нужно только ввести её название и всё? ($db = 'New'; //Имя базы) Или еще её создать как-то нужно? Просто ничего об этом еще не знаю... 2) И почему вывод вод такие ошибки: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'values ('', 'Kostya','Vash', '', '234'' at line 1 INSERT into values ('', 'Kostya','Vash', '', '234' :?:
'".$POST['Email']."' замени на '".$_POST['Email']."' и где INSERT into ".$TableName." values ".$TableName." это имя таблицы так что тоже определи переменную!
Поправил: PHP: <?php // Удаление пробелов в начале и в конце строк. $FirstName = trim ($_POST['FirstName']); $LastName = trim ($_POST['LastName']); $Email = trim ($_POST[ 'Email'] ); $Comments = trim ($_POST['Comments']); // Установка значения переменных для доступа к базе данных. function db($sql) { if (!isset($GLOBAL['DB_LINK'])){ $hostname = 'localhost'; //Хост $username = 'root'; //Логин $pass = '00001969'; //пароль $db = 'newbase'; //Имя базы $TableName = "Feedback"; $GLOBAL['DB_LINK'] = mysql_connect("$hostname", "$username", "$pass"); //соединение с mySQL mysql_select_db("$db", $GLOBAL['DB_LINK']); //выбор бд mysql_query ("SET NAMES cp1251"); //кодировка } $result = mysql_query($sql) or die(mysql_error() . "\n<br>\n" . $sql); // Выполняем SQL запрос return $result; } $sql = ("INSERT into ".$TableName." values ('', '".$_POST['FirstName']."','".$_POST['LastName']."', '".$_POST['Email']."', '".$_POST['Comments']."'"); $result = db($sql); ?> Теперь вот, что выдает: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'values ('', '43','34', '4324', ' 344'' at line 1 INSERT into values ('', '43','34', '4324', ' 344'
не INSERT into ".$TableName." values а INSERT into ".$TableName." value Базу данных нужно создавать с помощью SQL запросов! [sql] create database test; //создаст БД тест create table users( // создаст таблицу юзеры id int(11) not null auto_increment primary key, names varchar (30) ); [/sql] Можешь использовать PHPMyAdmin
А строка эта выскакивает( You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'values ('', '43','34', '4324', ' 344'' at line 1 INSERT into values ('', '43','34', '4324', ' 344' ), только из-за того, что базу не создал??
Странно, поменял я values на value.... Теперь вот так всё выглядит: HTML HTML: <html> <head> <title> Сохраняем данные в БД </title> </head> <BODY> <FORM ACTION="http://127.0.0.1/ST/HandleForm.php" METHOD=POST> First Name<INPUT TYPE=TEXT NAME="FirstName" SIZE=20><br> Last Name<INPUT TYPE=TEXT NAME="LastName" SIZE=40><br> E-mail Address<INPUT TYPE=TEXT NAME="Email" SIZE=60><br> Comments<TEXTAREA NAME="Comments" ROWS=5 COLS=40> </TEXTAREA> <input type="submit" value="Отправить"> </form> </body> </html> PHP PHP: <?php // Удаление пробелов в начале и в конце строк. $FirstName = trim ($_POST['FirstName']); $LastName = trim ($_POST['LastName']); $Email = trim ($_POST[ 'Email'] ); $Comments = trim ($_POST['Comments']); // Установка значения переменных для доступа к базе данных. function db($sql) { if (!isset($GLOBAL['DB_LINK'])){ $hostname = 'localhost'; //Хост $username = 'root'; //Логин $pass = '00001969'; //пароль $db = 'newbase'; //Имя базы $TableName = "Feedback"; $GLOBAL['DB_LINK'] = mysql_connect("$hostname", "$username", "$pass"); //соединение с mySQL mysql_select_db("$db", $GLOBAL['DB_LINK']); //выбор бд mysql_query ("SET NAMES cp1251"); //кодировка } $result = mysql_query($sql) or die(mysql_error() . "\n<br>\n" . $sql); // Выполняем SQL запрос return $result; } $sql = ("INSERT into ".$TableName." value ('', '".$_POST['FirstName']."','".$_POST['LastName']."', '".$_POST['Email']."', '".$_POST['Comments']."'"); $result = db($sql); ?> Сейчас с myadmin разбираюсь... Может тогда заработает..
kuliev value -- величина values -- величины Поэтому все правильно у него было. http://www.mysql.ru/docs/man/INSERT.html
Но хочу, заметить один момент. Что value, что values = результат одинаковый, не работает и выдает: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'values ('', '66','90', '88', ' --965'' at line 1 INSERT into values ('', '66','90', '88', ' --965' :cry:
Posthuman, повторюсь еще раз: А теперь поясню. У вас не задано НАЗВАНИЕ ТАБЛИЦЫ !!! Кстати... Строка $TableName = "Feedback"; ВНУТРИ функции абсолютно не катит... Так как запрос вы формируете за пределами функции...
Re: Не получается сохранить данные в MySQL...Помогите пожалу Если не секрет скажите откуда этот код содрали с какой книжки или еще откуда?