За последние 24 часа нас посетили 17878 программистов и 1600 роботов. Сейчас ищут 886 программистов ...

Создается пустая строка в базе данных

Тема в разделе "PHP и базы данных", создана пользователем Totemband, 14 дек 2010.

  1. Totemband

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

    С нами с:
    14 дек 2010
    Сообщения:
    6
    Симпатии:
    0
    Всем добрый день!

    У меня проблема следующего характера:
    На локальном компьютере установлены appache 2.2.17, mysql 5.1.53 и php 5.3.3.
    Мною созданы 2 файла books.html и insert_book.php
    Из формы в books.html данные обрабатываются скриптом insert_book.php и вносятся в базу данных "base", таблицу "books", поле "author"

    Коды:

    books.html
    Код (Text):
    1.  
    2. <html>
    3. <head>
    4. <title>HTML-форма</title>
    5. </head>
    6. <body>
    7. <form ACTION="insert_book.php" method="post">
    8. Автор<br>
    9. <input name="author" TYPE="text" maxlength=30 size=30>
    10. <br>
    11. <input type="submit" name="submit" value="Ввод">
    12. </form>
    13. </body>
    14. </html>
    insert_book.php
    Код (Text):
    1.  
    2. <?php
    3. $link = mysql_connect("localhost", "root", "12345")
    4.         or die("Could not connect: " . mysql_error());
    5.     print ("Connected successfully    ");
    6. mysql_select_db("base") or die(mysql_error());
    7. print ("Database selected");
    8. $query = "INSERT INTO books (author) VALUES('$author')";
    9. mysql_query($query) or die(mysql_error());
    10. print ("Информация о вас занесена в базу данных.");
    11. mysql_close($link);
    12. ?>
    После этого скрипт выполняется успешно, но вместо введённой в поле информации в базу данных записывается пустая строка, что видно из этого рисунка:
    [​IMG]
    При этом если поменять значение в строке на
    Код (Text):
    1. $query = "INSERT INTO books (author) VALUES('author')";
    тогда все ок. и в базу данных записывается текстовое значение "author"

    Короче, не могу разобраться, в чём дело. Перепробовал кучу вариантов. Только начинаю изучать php и mysql, поэтому без вашей помощи мне не разобраться.

    Заранее спасибо!
     
  2. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Видимо у тебя в php.ini:
    register_globals = Off

    Поэтому нужно явно указывать что $author - это POST переменная
    добавь перед самим запросом
    PHP:
    1.  
    2. $author=mysql_real_escape_string($_POST['author']);
    3. $query = "INSERT INTO books (author) VALUES('$author')";
    4.  
     
  3. Totemband

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

    С нами с:
    14 дек 2010
    Сообщения:
    6
    Симпатии:
    0
    а нельзя просто в php.ini сделать register_globals = On?
     
  4. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    можно. Однако общая рекомендация такая- лучше когда
    register_globals = Off
     
  5. Totemband

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

    С нами с:
    14 дек 2010
    Сообщения:
    6
    Симпатии:
    0
    Спасибо runner, проблему решил, все работает!