За последние 24 часа нас посетили 63132 программиста и 1744 робота. Сейчас ищут 962 программиста ...

Проблема с MySQl

Тема в разделе "Прочие вопросы по PHP", создана пользователем Shadofff, 15 май 2011.

  1. Shadofff

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

    С нами с:
    24 мар 2011
    Сообщения:
    48
    Симпатии:
    0
    Возникла след. проблема:

    вот код:

    PHP:
    1. $serpasp=$_POST['serpasp'];
    2. $nompasp=$_POST['nompasp'];
    3. $kempasp=$_POST['kempasp'];
    4.  
    5.  
    6. mysql_query('UPDATE `dogovor` SET `serpasp`='.$_POST['serpasp'].',`nompasp`='.$_POST['nompasp'].',`kempasp`='.$_POST['kempasp'].' WHERE `id_dog`='.$pid.' ') or die (mysql_error());

    PHP:
    1. $_POST['serpasp']
    2. $_POST['nompasp']
    3. $_POST['kempasp']
    4.  
    - эти переменные берутся из формы, точнее из текстбоксов на ней, так вот, если не заполнено хотя бы одно, данный запрос выдает следующую ошибку: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax"
    Подчеркиваю, если все три поля на форме заполнены то все нормально обновляется в БД... подскажите, что за ХРЕНЬ?
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Ну у тебя же получается
    Код (Text):
    1. ... SET `serpasp`=,`nompasp`=,`kempasp`= WHERE ...
    Если в поле ничего нет, то получается ошибочный синтаксис.
    А надо бы наоборот кавычки поставить
    Код (Text):
    1. ... SET serpasp=``,nompasp=``,kempasp=`` WHERE ...
    внутрь `` выводи значение.

    Удивительно, что у тебя вообще что-то работает с таким синтаксисом.
     
  3. Shadofff

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

    С нами с:
    24 мар 2011
    Сообщения:
    48
    Симпатии:
    0
    PHP:
    1. mysql_query('UPDATE `dogovor` SET serpasp=`'.$_POST['serpasp'].'`,nompasp='.$_POST['nompasp'].',kempasp='.$_POST['kempasp'].' WHERE `id_dog`='.$pid.' ') or die (mysql_error());
    так? тоже не работает!
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    так то должно работать

    Код (Text):
    1. $serpasp='',$nompasp='',$kempasp='';//дефолтные значения
    2.  
    3. if(isset($_POST['serpasp'])){$serpasp=$_POST['serpasp'];}
    4. if(isset($_POST['nompasp'])){$nompasp=$_POST['nompasp'];}
    5. if(isset($_POST['kempasp'])){$kempasp=$_POST['kempasp'];}
    6.  
    7. mysql_query("UPDATE dogovor SET serpasp=`$serpasp`,nompasp=`$nompasp`,kempasp=`$kempasp` WHERE id_dog=`$pid`") or die(mysql_error());
     
  5. Alex_pac

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

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    PHP:
    1. <?php
    2. $serpasp='',$nompasp='',$kempasp='';//дефолтные значения
    3.  
    4. if(!empty($_POST['serpasp'])){$serpasp=mysql_real_escape_string($_POST['serpasp']);}
    5. if(!empty($_POST['nompasp'])){$nompasp=mysql_real_escape_string($_POST['nompasp']);}
    6. if(!empty($_POST['kempasp'])){$kempasp=mysql_real_escape_string($_POST['kempasp']);}
    7.  
    8. mysql_query("UPDATE dogovor SET serpasp='$serpasp',nompasp='$nompasp',kempasp='$kempasp' WHERE id_dog='$pid'") or die(mysql_error());
     
  6. lexinfo

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

    С нами с:
    16 янв 2007
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    Ростов-на-Дону
    Если пустое значение, то поставь ему в базе, что оно может быть NULL. Да и у некоторых хостеровиногда мускул настроен так, что при пустом запросе тебя обламывают. По типу
    PHP:
    1. mysql_query("UPDATE dogovor SET serpasp='$serpasp',nompasp='$nompasp',kempasp='$kempasp' WHERE id_dog='$pid'") or die(mysql_error());
    если например $serpasp пустое, то надо писать

    PHP:
    1. mysql_query("UPDATE dogovor SET serpasp=NULL,nompasp='$nompasp',kempasp='$kempasp' WHERE id_dog='$pid'") or die(mysql_error());