За последние 24 часа нас посетили 18818 программистов и 1627 роботов. Сейчас ищут 947 программистов ...

Не получается сохранить данные в MySQL...Помогите пожалуйста

Тема в разделе "PHP для новичков", создана пользователем Posthuman, 25 янв 2009.

  1. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Пытаюсь сохранить данные из формы в БД (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 строчке сверху в скрипте? Какая значит строчка?
     
  2. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    используете неивестные PHP комманды:
     
  3. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Спасибо, но какие из команд не подходят? И какими можно заменить?? :?:
    Заранее благодарен...
     
  4. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Уважаемый для начала от форматируйте код.
    Во вторых в Вашем коде куча ошибок начиная с банальных, вместо знака доллара $ пишите S, вместо переменной
    $Password = "234567"; пишите $Link = raysql_connect ($Host, SUser, $234567);
    НЕТ ТАКОЙ ФУНКЦИИ raysql_connect , вот правильная MySQL_CONNECT
     
  5. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Спасибо, вообще листинг из книги Гарри Ульмана. Сейчас подправлю и посмотрю сработает ли...
     
  6. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Можешь не пробывать не сработает, там еще куча ошибок!
     
  7. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Вот скрипт поправил:

    <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]

    И что значит отформатировать?? Как это? :oops:
     
  8. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Во первых форму ввода исправь вот так:

    HTML:
    1.  
    2. <html>
    3. <head>
    4. Сохраняем данные в БД
    5. </title>
    6. </head>
    7. <BODY>
    8. <FORM ACTION="http://127.0.0.1/ST/HandleForm.php" METHOD=POST>
    9. First Name<INPUT TYPE=TEXT NAME="FirstName" SIZE=20><br>
    10. Last Name<INPUT TYPE=TEXT NAME="LastName" SIZE=40><br>
    11. E-mail Address<INPUT TYPE=TEXT NAME="Email" SIZE=60><br>
    12. Comments<TEXTAREA NAME="Comments" ROWS=5 COLS=40>
    13. <input type="submit" value="Отправить">
    14. </form>
    15. </body>
    16. </html>
    17.  
    18.  
    Вот этот код отформатирован BBCode так его гораздо лучше читать чем все сплошняком!

    PHP:
    1.  
    2. <?php
    3. // Удаление пробелов в начале и в конце строк.
    4. $FirstName = trim ($_POST['FirstName']);
    5. $LastName = trim ($_POST['LastName']);
    6. $Email = trim ($_POST[ 'Email'] );
    7. $Comments = trim ($_POST['Comments']);
    8.  
    9. // Установка значения переменных для доступа к базе данных.
    10.  
    11. function db($sql) {
    12.     if (!isset($GLOBAL['DB_LINK'])){
    13.         $hostname           = 'localhost';   //Хост
    14.         $username           = 'root';        //Логин
    15.         $pass               = '';    //пароль
    16.         $db                 = '';  //Имя базы
    17.  
    18.         $GLOBAL['DB_LINK'] = mysql_connect("$hostname", "$username", "$pass");  //соединение с mySQL
    19.         mysql_select_db("$db", $GLOBAL['DB_LINK']);  //выбор бд
    20.         mysql_query ("SET NAMES cp1251"); //кодировка
    21.     }
    22.  
    23.     $result = mysql_query($sql) or die(mysql_error() . "\n<br>\n" . $sql); // Выполняем SQL запрос
    24.     return $result;
    25. }
    26.  
    27. $sql = ("INSERT into ".$TableName." values ('', '".$_POST['FirstName']."','".$_POST['LastName']."', '".$POST['Email']."', '".$_POST['Comments']."'");
    28. $result = db($sql);
    29.  
    30. ?>
    31.  
    32.  
    33.  
     
  9. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Спасибо, уже люблю этот форум :)
    Исправил всё, ввел пароль и название базы данных:

    PHP:
    1.  <?php
    2.  // Удаление пробелов в начале и в конце строк.
    3.  $FirstName = trim ($_POST['FirstName']);
    4.  $LastName = trim ($_POST['LastName']);
    5.  $Email = trim ($_POST[ 'Email'] );
    6.  $Comments = trim ($_POST['Comments']);
    7.  
    8.  // Установка значения переменных для доступа к базе данных.
    9.  
    10.  function db($sql) {
    11.      if (!isset($GLOBAL['DB_LINK'])){
    12.          $hostname          = 'localhost';  //Хост
    13.          $username          = 'root';        //Логин
    14.          $pass              = '9999245';    //пароль
    15.          $db                = 'New';  //Имя базы
    16.  
    17.          $GLOBAL['DB_LINK'] = mysql_connect("$hostname", "$username", "$pass");  //соединение с mySQL
    18.          mysql_select_db("$db", $GLOBAL['DB_LINK']);  //выбор бд
    19.          mysql_query ("SET NAMES cp1251"); //кодировка
    20.      }
    21.  
    22.      $result = mysql_query($sql) or die(mysql_error() . "\n<br>\n" . $sql); // Выполняем SQL запрос
    23.      return $result;
    24.  }
    25.  
    26.  $sql = ("INSERT into ".$TableName." values ('', '".$_POST['FirstName']."','".$_POST['LastName']."', '".$POST['Email']."', '".$_POST['Comments']."'");
    27.  $result = db($sql);
    28.  
    29.  ?>
    Теперь имеется 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'
    :?:
     
  10. unicross

    unicross Активный пользователь

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Потеряли строку....

    Не для создания, а для подключения.
    Создавать нужно отдельно...
     
  11. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    '".$POST['Email']."' замени на '".$_POST['Email']."'
    и где INSERT into ".$TableName." values ".$TableName." это имя таблицы так что тоже определи переменную!
     
  12. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Поправил:

    PHP:
    1.  <?php
    2.  // Удаление пробелов в начале и в конце строк.
    3.  $FirstName = trim ($_POST['FirstName']);
    4.  $LastName = trim ($_POST['LastName']);
    5.  $Email = trim ($_POST[ 'Email'] );
    6.  $Comments = trim ($_POST['Comments']);
    7.  
    8.  // Установка значения переменных для доступа к базе данных.
    9.  
    10.  function db($sql) {
    11.      if (!isset($GLOBAL['DB_LINK'])){
    12.          $hostname          = 'localhost';  //Хост
    13.          $username          = 'root';        //Логин
    14.          $pass              = '00001969';    //пароль
    15.          $db                = 'newbase';  //Имя базы
    16.          $TableName         = "Feedback";
    17.          
    18.          
    19.          $GLOBAL['DB_LINK'] = mysql_connect("$hostname", "$username", "$pass");  //соединение с mySQL
    20.          mysql_select_db("$db", $GLOBAL['DB_LINK']);  //выбор бд
    21.          mysql_query ("SET NAMES cp1251"); //кодировка
    22.      }
    23.  
    24.      $result = mysql_query($sql) or die(mysql_error() . "\n<br>\n" . $sql); // Выполняем SQL запрос
    25.      return $result;
    26.  }
    27.  
    28.  $sql = ("INSERT into ".$TableName." values ('', '".$_POST['FirstName']."','".$_POST['LastName']."', '".$_POST['Email']."', '".$_POST['Comments']."'");
    29.  $result = db($sql);
    30.  
    31.  ?>
    Теперь вот, что выдает: 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'
     
  13. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    И вопрос: как нужно создавать базу данных??
     
  14. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    не 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
     
  15. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Хорошо, спасибо.... Буду знакомиться с PHPMyAdmin.
     
  16. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    А строка эта выскакивает( 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'
    ), только из-за того, что базу не создал??
     
  17. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    INSERT into value
     
  18. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Странно, поменял я values на value....
    Теперь вот так всё выглядит:

    HTML

    HTML:
    1.  <html>
    2.  <head>
    3.  <title>
    4.  Сохраняем данные в БД
    5.  </title>
    6.  </head>
    7.  <BODY>
    8.  <FORM ACTION="http://127.0.0.1/ST/HandleForm.php" METHOD=POST>
    9.  First Name<INPUT TYPE=TEXT NAME="FirstName" SIZE=20><br>
    10.  Last Name<INPUT TYPE=TEXT NAME="LastName" SIZE=40><br>
    11.  E-mail Address<INPUT TYPE=TEXT NAME="Email" SIZE=60><br>
    12.  Comments<TEXTAREA NAME="Comments" ROWS=5 COLS=40>
    13.  </TEXTAREA>
    14.  <input type="submit" value="Отправить">
    15.  </form>
    16.  </body>
    17.  </html>
    PHP

    PHP:
    1.  <?php
    2.  // Удаление пробелов в начале и в конце строк.
    3.  $FirstName = trim ($_POST['FirstName']);
    4.  $LastName = trim ($_POST['LastName']);
    5.  $Email = trim ($_POST[ 'Email'] );
    6.  $Comments = trim ($_POST['Comments']);
    7.  
    8.  // Установка значения переменных для доступа к базе данных.
    9.  
    10.  function db($sql) {
    11.      if (!isset($GLOBAL['DB_LINK'])){
    12.          $hostname          = 'localhost';  //Хост
    13.          $username          = 'root';        //Логин
    14.          $pass              = '00001969';    //пароль
    15.          $db                = 'newbase';  //Имя базы
    16.          $TableName         = "Feedback";
    17.          
    18.          
    19.          $GLOBAL['DB_LINK'] = mysql_connect("$hostname", "$username", "$pass");  //соединение с mySQL
    20.          mysql_select_db("$db", $GLOBAL['DB_LINK']);  //выбор бд
    21.          mysql_query ("SET NAMES cp1251"); //кодировка
    22.      }
    23.  
    24.      $result = mysql_query($sql) or die(mysql_error() . "\n<br>\n" . $sql); // Выполняем SQL запрос
    25.      return $result;
    26.  }
    27.  
    28.  $sql = ("INSERT into ".$TableName." value ('', '".$_POST['FirstName']."','".$_POST['LastName']."', '".$_POST['Email']."', '".$_POST['Comments']."'");
    29.  $result = db($sql);
    30.  
    31.  ?>
    Сейчас с myadmin разбираюсь... Может тогда заработает..
     
  19. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
  20. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Но хочу, заметить один момент. Что 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:
     
  21. unicross

    unicross Активный пользователь

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Posthuman, повторюсь еще раз:
    А теперь поясню. У вас не задано НАЗВАНИЕ ТАБЛИЦЫ !!!

    Кстати... Строка $TableName = "Feedback"; ВНУТРИ функции
    абсолютно не катит... Так как запрос вы формируете за пределами функции...
     
  22. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    А как задать название таблицы и куда запрос нужно засунуть, хоть куда, но только из функции??
     
  23. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Спасибо, буду знать! :D
     
  24. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Re: Не получается сохранить данные в MySQL...Помогите пожалу

    Если не секрет скажите откуда этот код содрали с какой книжки или еще откуда?
     
  25. Posthuman

    Posthuman Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Я вот только не понял к чему цитирование было?? Мне оно разобраться не помогло...