sql запрос

Discussion in 'PHP' started by barnaki, 1 Mar 2010.

  1. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    140
    Reputations:
    4
    почему может не вставлять значения эта строка или все праильно ?
    $insert_query = mysql_query('INSERT INTO guestbook (message,email,name,city) VALUES ($message,$email,$name,$city);');
    if(!$insert_query) {echo "немогу добавить запись в базу данных";}
     
  2. .:[melkiy]:.

    .:[melkiy]:. Elder - Старейшина

    Joined:
    25 Jan 2009
    Messages:
    355
    Likes Received:
    314
    Reputations:
    163
    PHP:
    $insert_query mysql_query("INSERT INTO `people` (`id`,`name`,`last_name`,`age`,`sity`) VALUES ('$id','$name','$last_name','$age','$sity')");
    if(!
    $insert_query) {echo "немогу добавить запись в базу данных";
     
    #2 .:[melkiy]:., 1 Mar 2010
    Last edited: 1 Mar 2010
    1 person likes this.
  3. Chubakur

    Chubakur Member

    Joined:
    6 Apr 2009
    Messages:
    48
    Likes Received:
    12
    Reputations:
    0
    имена переменных тоже должны быть в кавычках например:
    $insert_query = mysql_query("INSERT INTO guestbook (message,email,name,city) VALUES (`".$message."`,"`.$email."`,`".$name."`,`".$city."`)");
    Вроде так. Честно, щас что-то не соображаю.
    А вообще поставь echo и смотри как сформирован запрос.
     
    #3 Chubakur, 1 Mar 2010
    Last edited: 1 Mar 2010
  4. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    ; между двумя скобками, имхо, лишняя
     
  5. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    PHP:
    <?php
    if(mysql_query("INSERT INTO guestbook (message,email,name,city) VALUES ('$message','$email','$name','$city');"))
    echo 
    "немогу добавить запись в базу данных";
    ?>
     
    1 person likes this.
  6. ZeroByte

    ZeroByte Banned

    Joined:
    30 Jan 2009
    Messages:
    7
    Likes Received:
    3
    Reputations:
    0
    Может быть еще ситуация, когда поле ID (оно скорее всего в этой таблице тоже есть) сделано уникальным, а auto_increment не стоит.

    P.S. этот пример скорее всего не работал из-за того, что нет кавычек
     
  7. fokinkostya

    fokinkostya New Member

    Joined:
    28 Feb 2010
    Messages:
    1
    Likes Received:
    4
    Reputations:
    0
    Потому что много ошибок.
    Рекомендуется экранировать кавычками.

    PHP:
    <?php
    $query 
    'INSERT INTO `guestbook` (`message`, `email`, `name`, `city`) VALUES ("'.$message.'", "'.$email.'", "'.$name.'", "'.$city.'")';
    if (!
    mysql_query($query)) {
        echo 
    "не могу добавить запись в базу данных";
    }
    ?>
    Геморойно конечно ставить везде кавычки, но тогда проблем будет гораздо меньше. Экранирование ` используется только для имен таблиц, баз данных, ячеек. Двойные или одинарные кавычки используются для значений. ` - помогает избежать не желательного вызова служебных функций и т.п. Одинарные и двойные кавычки дают возможность вставки различных значений (нет пересечения с служебными функциями, при вставке значения с пробелом вставка будет происходить без ошибки и т.п.).

    Опять же надо вырабатывать определенные правила для себя и определенный стиль форматирования.

    Так же ошибка может происходить в случае, если в таблице есть поля, не указанные в запросе, для которых не указано значение по умолчанию.
     
    #7 fokinkostya, 3 Mar 2010
    Last edited: 3 Mar 2010