Помогите разобраться с апдейтом записи в базе

Тема в разделе "PHP", создана пользователем Istergul, 13 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Istergul

    Istergul Создатель

    Регистр.:
    19 янв 2009
    Сообщения:
    17
    Симпатии:
    0
    Не могу понять причину ошибки. Запись не изменяется в базе.
    Скрипт должен вносить изменения в выбранную запись. Выводится следующая ошибка:
    Warning: mysqli_error() expects exactly 1 parameter, 0 given in Z:\home\kniga\www\ad.php on line 38
    Все переменные есть. Они не пустые, тогда же в чём дело?..
    Может кто-неть увидит ошибку..

    Код:
    if ($_SERVER['REQUEST_METHOD'] == "POST")
    {
    	$id = $_POST['id'];
    	$suk = htmlspecialchars(stripslashes($_POST['suk']));
    	$what = htmlspecialchars(stripslashes($_POST['what']));
    	$mesto = htmlspecialchars(stripslashes($_POST['mesto']));
    	$name = htmlspecialchars(stripslashes($_POST['name']));
    	if ($suk == '')
    	{
    		throw new Exception ('Вы не ввели имя!');
    	}
    	if ($what == '')
    	{
    		throw new Exception ('Вы не ввели причину вашей жалобы!');
    	}
    	@ $result = mysqli_query($conn,"update $table set name=$name, suk=$suk, what=$what, mesto=$mesto where id=$id") or die(mysqli_error());
    	if (!$result)
    	{
    		throw new Exception('Не удается произвести апдейт жалобы из базы данных.'); 
    	}
    	else do_html_info('Запись успешно изменена!');
    }
     
  2. Freeborn

    Freeborn Постоялец

    Регистр.:
    31 окт 2008
    Сообщения:
    62
    Симпатии:
    21
    ...
    PHP:
    $result mysqli_query($conn,"update $table set name=$name, suka=$suka, what=$what, mesto=$mesto where id=$id") or die(mysqli_error($conn))
    ...
     
  3. Istergul

    Istergul Создатель

    Регистр.:
    19 янв 2009
    Сообщения:
    17
    Симпатии:
    0
    Да не в этом дело. Наверно что-то с колонками.
     
  4. Freeborn

    Freeborn Постоялец

    Регистр.:
    31 окт 2008
    Сообщения:
    62
    Симпатии:
    21
    Вы попробовали, прежде чем что-то утверждать?

    Да, в одинарные кавычки все переменные возьмите:
    PHP:
    "update $table set name='$name', suka='$suka', what='$what', mesto='$mesto' where id='$id'"
     
  5. Istergul

    Istergul Создатель

    Регистр.:
    19 янв 2009
    Сообщения:
    17
    Симпатии:
    0
    оказалось дело в отсутствии одинарных кавычек.
    но почему?
    запрос выборки, удаления и добавления отлично работает без кавычек, в которые заключены переменные.
     
  6. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    Выборка и удаление вполне могут работать нормально, т.к., наверняка, используют только колонку id(а она integer). Но вот как добавление у тебя работало - хз.
    Скорее всего не обновлялись данные, т.к. в некоторых переменных присутствовал либо пробел, либо другие символы(которые обязательно должны быть в кавычках).
     
  7. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Потому что по синтаксису строковые значения в запросах нужно указывать в одинарных кавычках.
     
Статус темы:
Закрыта.