За последние 24 часа нас посетили 20148 программистов и 1696 роботов. Сейчас ищут 1502 программиста ...

Какая-то мистика. Я в отчаянии. Никак не добавляется строка

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

  1. Velsevul

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

    С нами с:
    27 янв 2008
    Сообщения:
    6
    Симпатии:
    0
    Ситуация такая. В базе данных есть таблица, допустим "new", следующей структуры:
    Код (Text):
    1.  
    2. id  int(10) auto_increment                           
    3. qw  text    cp1251_general_ci                                
    4. we  text    cp1251_general_ci
    Есть на сервере php-скрипт который должен добавлять новые строки в сию базу, такого вида:
    Код (Text):
    1.  
    2. <?
    3. if($submit)
    4. {
    5. $query="insert into new values('', '$qw', '$we')";
    6. mysql_query($query);
    7. }
    8. ?>
    9. <form action="" method="post" id="inputform">
    10. <input type="text" name="qw">
    11. <input type="text" name="we">
    12. <input type="submit" name="submit" value="Добавить">
    13. </form>
    Скрипт включается в основной файл, в котором есть данные доступа к mysql с этим все нормально. Но! Не работает! Хоть ты тресни...
    В чем может быть причина браты?.. Помогите..
     
  2. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    попробуй
    PHP:
    1.  
    2. if(isset($_POST['submit']))
    3. {
    4.      $qw=addslashes($_POST['qw']);
    5.      $we=addslashes($_POST['we']);
    6.      $query="insert into new (qw,we) values('$qw', '$we')";
    7.      mysql_query($query);
    8. }
    9.  
    10. print "<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\" id=\"inputform\">";
    11. ?>
    12. <input type="text" name="qw">
    13. <input type="text" name="we">
    14. <input type="submit" name="submit" value="Добавить">
    15. </form>
    16.  
     
  3. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Причин несколько
    1) не указан атрибут action для формы
    2) поле id первичный ключ с auto_increment. Поэтому запрос на вставку неверный-первая запись может записаться, а все последующие будут иметь одинаковый с первой записью первичный ключ, что невозможно
    3) если register_globals=off, то нужно использовать вместо переменных массив _POST
     
  4. Velsevul

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

    С нами с:
    27 янв 2008
    Сообщения:
    6
    Симпатии:
    0
    Попробовал как Вы написали - тоже не работает.
    В тоже время, на той же базе и хостинге есть такая таблица и скрипт, которые работают.
    Структура "this":
    Код (Text):
    1.  
    2. id                int(11)                                       Нет  Нет    auto_increment   
    3. name_rus              varchar(256)          cp1251_general_ci              Нет         Нет  
    4. description_sec text                   cp1251_general_ci        Нет  Нет
    Скрипт:
    Код (Text):
    1.  
    2. <?
    3. if($submit)
    4. {
    5. $query="INSERT into this VALUES('', '$name_rus', '$description_sec')";
    6. mysql_query($query);
    7. }
    8. ?>
    9. <form action="" method="post">
    10. <table border="0" cellpadding="3" cellspacing="3" bgcolor="f0f0f0" width="100%">
    11. <tr bgcolor="fefefe"><td align="right">Название:</td><td><input name='name_rus' type='text' size='50'></td></tr>
    12. <tr bgcolor="fefefe"><td align="right">Описание:</td><td><textarea name='description_sec' cols='100' rows='25'></textarea></td></tr>
    13. <tr bgcolor="fefefe"><td align="right"></td><td><input type='submit' name='submit' value='Добавить'></td></tr>
    14. </table>
    15. </form>
    Как это объяснить?..
     
  5. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Velsevul
    Необходимо убедится в том, что:
    1. данные пришли в том виде, в котором мы ожидаем.
    PHP:
    1. <?php
    2. if (isset($_POST['submit'])){
    3.     echo "<pre>";
    4.     print_r($_POST);
    5.     echo "</pre>";
    6. }
    7.  
    2. в запросе не сделали никаких случайных ошибок.
    PHP:
    1. <?php
    2. $query = "SELECT * ....";
    3. mysql_query($query) or die("Mysql не может выполнить запрос: " . mysql_error());
    4.  
     
  6. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Velsevul убедись
    1)упомянутый скрипт подключается?
    2)действительно ли в момент выполнения запроса на вставку установлено соединение с базой данных?
     
  7. wiiio

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

    С нами с:
    24 авг 2010
    Сообщения:
    18
    Симпатии:
    0
    сделай
    Код (Text):
    1. mysql_query($query) or die(mysql_error());
    полный код с дополнениями попробуй:
    PHP:
    1.  
    2.  
    3. <?
    4. if (isset($_POST['submit'])){
    5.  $query=" INSERT into `this` VALUES('', '".$_POST['name_rus']."', '".$_POST['description_sec']."') ";
    6.  mysql_query($query) or die(mysql_error());
    7. } else {
    8.  echo 'ERROR submit<br>';
    9.  echo $_POST['name_rus'].'<br>';
    10.  echo $_POST['description_sec'].'<br>';
    11. }
    12.  
    13. ?>
    14. <form action="" method="post">
    15. <table border="0" cellpadding="3" cellspacing="3" bgcolor="f0f0f0" width="100%">
    16. <tr bgcolor="fefefe"><td align="right">Название:</td><td><input name='name_rus' type='text' size='50'></td></tr>
    17. <tr bgcolor="fefefe"><td align="right">Описание:</td><td><textarea name='description_sec' cols='100' rows='25'></textarea></td></tr>
    18. <tr bgcolor="fefefe"><td align="right"></td><td><input type='submit' name='submit' value='Добавить'></td></tr>
    19. </table>
    20. </form>
    21.  
    22.  
     
  8. Velsevul

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

    С нами с:
    27 янв 2008
    Сообщения:
    6
    Симпатии:
    0
    wiiio спасибо!
    Вставил твой код, с ним работает! В чем же могла быть причина?
     
  9. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    возможно в магических кавычках? magic_quote?
     
  10. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Добавьте эту функцию и замените mysql_query на debug_mysql_query

    И если скрипт доходит до вставки и возникает ошибка, он её напишет.

    PHP:
    1. <?php
    2. function debug_mysql_query( $query)
    3. {
    4.     mysql_query( $query) OR print( '[' .mysql_errno() .']: ' .mysql_error() .'<br /><br />Used query:<br />' .$query);
    5. }
    6. ?>