Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 3

Обновление данных в БД

28.07.2011, 14:49. Показов 5231. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, написал небольшой скрипт редактирования данных в БД через формы, скрипт срабатывает, но данные в бд почему-то не обновляет, подскажите пожалуйста в чем проблема?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
require_once ('connectdb.php');
require_once('startsession.php');
$id = $_GET['id'];
$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die ('сбой подключения');
 $query = "SELECT * FROM serials WHERE id='$id'";
  $data = mysqli_query($dbc, $query);
  $row = mysqli_fetch_array($data);
  
?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table id="edit_table"><tr><td>
<label for="edit_serial_name">Назване сериала</label></td><td>
<input type="text" name="edit_serial_name" value="<?php echo $row['serial_name']; ?>"/></td></tr>
<tr><td>
<label for="edit_quant_sezon">Количество сезонов</label></td><td>
<input type="text" name="edit_quant_sezon" value="<?php echo $row['quant_sezon']; ?>"/> </td></tr>
<tr><td>
<label for="edit_about_serial">Описание сериала</label></td><td>
<textarea type="text"  size="120" name="edit_about_serial" MAXLENGTH="10000" rows="30" cols="95"><?php echo $row['about_serial']; ?></textarea> </td></tr>
<tr><td>&nbsp</td><td><input type="submit" value="Сохранить" name="submit"></td></tr>
</table>
 
</form>
<?php
 
if (isset($_POST['submit'])) {
$edit_serial_name = $_POST['edit_serial_name'];
$edit_quant_sezon = $_POST['edit_quant_sezon'];
$edit_about_serial = $_POST['edit_about_serial'];
if (!empty($edit_serial_name) && !empty($edit_quant_sezon)) {
$query = "UPDATE serials SET serial_name = '$edit_serial_name', " . " quant_sezon = '$edit_quant_sezon', " . "about_serial = '$edit_about_serial' WHERE id='$id'";
mysqli_query ($dbc, $query) or die ('ошибка записи');
echo 'Данные обновлены!';
}
else {
echo 'Не оставляйте поля Название сериала и Количество сезонов не заполнеными';
}
}
else {
echo ('Для сохранения данных нажмите на кнопку "Сохранить"');
}
 mysqli_close($dbc);
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.07.2011, 14:49
Ответы с готовыми решениями:

Обновление базы и ошибка: Обновление невозможно. База данных или объект доступны только для чтения.
Помогите пожалуйста! asp не может обновить базу. Про ошибку говорит Microsoft OLE DB Provider for ODBC Drivers (0x80004005) ...

Обновление данных в модели Linq to SQL при обновлении данных в БД
Подскажите новичку. Есть база данных, в приложении настроена работа с БД с помощью Linq to SQL. Из приложения все работает, но когда я...

Автоматическое обновление данных ADOTable при добавлении данных другим экземляром программы
С моей программой работает около 3-4 экземляров программы. Одна таблица работает с помощью ADOTable. В ней постоянно обновляемые данные. ...

23
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
28.07.2011, 14:55
попробуйте так:

33 строка
PHP
1
mysqli_query ($query) or die ('ошибка записи');
0
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 3
28.07.2011, 14:57  [ТС]
без параметра подключения к бд вылетает ошибка
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
28.07.2011, 15:34
ошибочка у тя
Цитата Сообщение от PlumLi Посмотреть сообщение
WHERE id='$id'
$id у тя численный тип, нельзя его обрамлять в кавычки в sql-запросах.
убери кавычки и здесь подправь немного
PHP
1
$id = (int)$_GET['id'];
0
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 3
28.07.2011, 18:19  [ТС]
не помогло

Добавлено через 1 час 43 минуты
вопрос решился нужно было указать в форме id:

PHP
1
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'] . '?id=' . $id; ?>">
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 26
13.10.2011, 11:44
Помогите пожалуйста!
Проблема с обновлением данных, запрос UPDATE вроде-бы выполняется. То есть выводит на экран сообщение "да" (которое является результатом успешного выполнения запроса), но данные в базе НЕ обновляются.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
include './include/init.php';
(int) $id_edit = $_POST['edit'];
#echo $id_edit;
$edit = $db->Execute ( 'SELECT * FROM `classes` WHERE `id`='.$id_edit );
$floor = $db->Execute ('SELECT `name`,`id` FROM `floors`');
 
if (isset($_POST['submit'])) {
    (int) $id = $edit->fields['id'];
    $id_floor = $_POST ['id_floor'];
    $name = $db->qstr ( $_POST ['name'] );
    $img = 1;
    $computers = $db->qstr ( $_POST ['computers'] );
    $projector = $db->qstr ( $_POST ['projector'] );
    $network = $db->qstr ( $_POST ['network'] );
    $info = $db->qstr ( $_POST ['info'] );
    if ($db->Execute ('UPDATE `classes` SET `id_floor` = "'.$id_floor.'", `name` = "'.$name.'", `img` = "'.$img.'", `computers` = "'.$computers.'", `projector` = "'.$projector.'", `network` = "'.$network.'", `info` = "'.$info.'" WHERE `id` = "$id";')) { 
        echo "да";
    }
    else {
        die ( 'Помилка: ' . $db->ErrorMsg () );
    }
}
?>
<form action="" method='post'><h1 align="center">Редактирование аудитории</h1>
<table width="100%" border="1">
  <tr>
    <td align="center" width="20%">Этаж</td>
    <td>   
        <?php echo html_form::select_2in ( $edit->fields ['id_floor'], $floor->GetArray (), 'id', 'name', 'id_floor') ?></td>
  </tr>
  <tr>
    <td align="center">Название аудитории</td>
    <td> <input value="<?php echo $edit->fields['name']; ?>" id="name" name="name" type="text"></td>
  </tr>
  <tr>
    <td align="center">Фото аудитории</td>
    <td><a href="<?php echo $edit->fields['img']; ?>" title="показать" target="_blank">Показать</a></td>
  </tr>
  <tr>
    <td align="center">Количество компьютеров</td>
    <td> <input value="<?php echo $edit->fields['computers']; ?>" id="computers" name="computers" type="text""></td>
  </tr>
  <tr>
    <td align="center">Проэктор</td>
    <td>
    <input name="projector" type="radio" value="1">Так
<input name="projector" type="radio" value="0">Ні
    </td>
  </tr>
  <tr>
    <td align="center">Сетевое оборудование</td>
    <td><textarea name="network" cols="50" rows="5"><?php echo $edit->fields['network']; ?></textarea></td>
  </tr>
  <tr>
    <td align="center">Дополнительная информация</td>
    <td><textarea name="info" cols="55" rows="5"><?php echo $edit->fields['info']; ?></textarea></td>
  </tr>
</table>
<div>
<button type='submit' name='submit'>Сохранить</button>
</div>
</form>
0
32 / 31 / 0
Регистрация: 15.09.2011
Сообщений: 60
13.10.2011, 12:03
Цитата Сообщение от KeSSedy Посмотреть сообщение
WHERE `id` = "$id";'))
SQL
1
WHERE `id` = "'.$id.'";'))
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 26
13.10.2011, 12:35
1
WHERE `id` = "'.$id.'";'))
Нет, не в этом дело.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
13.10.2011, 14:23
PHP
1
if ($db->Execute ("UPDATE `classes` SET `id_floor` = $id_floor, `name` = '$name', `img` = '$img', `computers` = '$computers', `projector` = '$projector', `network` = '$network', `info` = '$info'  WHERE `id` = $id"))
вобщем у численных типов убрать кавычки
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 26
14.10.2011, 11:14
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
PHP
1
if ($db->Execute ("UPDATE `classes` SET `id_floor` = $id_floor, `name` = '$name', `img` = '$img', `computers` = '$computers', `projector` = '$projector', `network` = '$network', `info` = '$info'  WHERE `id` = $id"))
вобщем у численных типов убрать кавычки
выдает ошибку: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'first'', `img` = '1', `computers` = ''12'', `projector` = ''1'', `network` = ''f' at line 1
... и с кавычками какие-то приколы, где двойные а где одинарные
0
Почетный модератор
 Аватар для Humanoid
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
14.10.2011, 11:24
Цитата Сообщение от KeSSedy Посмотреть сообщение
... и с кавычками какие-то приколы, где двойные а где одинарные
Кавычки экранировать надо... иначе твой сайт взломают в момент.
Перед отправкой запроса выполни хотя бы
PHP
1
2
3
4
5
6
$name = addslashes($name);
$img = addslashes($img);
$computers = addslashes($computers);
$projector = addslashes($projector);
$network = addslashes($network);
$info = addslashes($info);
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 26
14.10.2011, 14:00
Цитата Сообщение от Humanoid Посмотреть сообщение
Кавычки экранировать надо... иначе твой сайт взломают в момент.
Перед отправкой запроса выполни хотя бы
PHP
1
2
3
4
5
6
$name = addslashes($name);
$img = addslashes($img);
$computers = addslashes($computers);
$projector = addslashes($projector);
$network = addslashes($network);
$info = addslashes($info);
У меня это делает немного другая функция, но похожая.
Цитата Сообщение от KeSSedy Посмотреть сообщение
PHP
1
$db->qstr ( $_POST ['name'] );
0
Почетный модератор
 Аватар для Humanoid
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
14.10.2011, 15:26
Цитата Сообщение от KeSSedy Посмотреть сообщение
У меня это делает немного другая функция, но похожая.
Похоже, что эта функция ещё и кавычки добавляет. Убери кавычки либо в ней, либо в запросе.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
14.10.2011, 15:55
Цитата Сообщение от KeSSedy Посмотреть сообщение
... и с кавычками какие-то приколы, где двойные а где одинарные
я ж написал
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
у численных типов убрать кавычки
возможно у какой то переменной надо еще убрать или добавить кавычки.

или как уже сказал Humanoid, дело в этой ф-ии
Цитата Сообщение от KeSSedy Посмотреть сообщение
qstr
лучше все данные, кроме паролей пускать через mysql_real_escape_string();
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 26
14.10.2011, 15:55
Цитата Сообщение от Humanoid Посмотреть сообщение
Похоже, что эта функция ещё и кавычки добавляет. Убери кавычки либо в ней, либо в запросе.
убрал, теперь понял что они там совсем лишние.. это я перебирал варианты решения своей проблемы.
у меня осталась проблема в запросе:
PHP
1
if ($db->Execute ('UPDATE `classes` SET `id_floor` = '.$id_floor.', `name` = '.$name.', `img` = '.$img.', `computers` = '.$computers.', `projector` = '.$projector.', `network` = '.$network.', `info` = '.$info.' WHERE `id`='.$id.''))
если в конце, убрать условие WHERE, то запрос в базу ИДЕТ, но заменяет все записи. А если добавляю WHERE, то пишет ошибку: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
То есть я скорей всего допускаю ошибку в синтаксисе WHERE с переменной $id
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
14.10.2011, 16:02
забыл написать.
Ребята, если у вас выпадает MySQL-ошибка напишите сразу после нее вывод запроса на экран.
напр., запрос называется $query , так после нее напишите
PHP
1
echo $query;
. Такая строка выведет сам запрос на экран и вы увидите где что пропушено.

Также можно поймать и другие не понятные ошибки, напр., белый экран, правда не всегда.

to Moderator - поставьте это где нибудь как памятку

Добавлено через 1 минуту
Цитата Сообщение от KeSSedy Посмотреть сообщение
То есть я скорей всего допускаю ошибку в синтаксисе WHERE с переменной $id
ты обрамляешь число в кавычки, убери их на хр.. )
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 26
14.10.2011, 16:06
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
ты обрамляешь число в кавычки, убери их на хр.. )
Если убираю, то выдает: Unknown column '$id' in 'where clause'
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
14.10.2011, 16:28
а.. у тя внешние кавычки одинарные, тогда возьми $id еще и в двойные кавычки
PHP
1
'WHERE `id`='".$id."'';
Добавлено через 2 минуты
или так что ли
PHP
1
if ($db->Execute ("UPDATE `classes` SET `id_floor` = $id_floor, `name` = '$name', `img` = '$img', `computers` = '$computers', `projector` = '$projector', `network` = '$network', `info` = '$info' WHERE `id`=$id"))
0
0 / 0 / 1
Регистрация: 25.05.2011
Сообщений: 41
14.10.2011, 16:30
тут же все просто
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 26
18.10.2011, 12:16
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
а.. у тя внешние кавычки одинарные, тогда возьми $id еще и в двойные кавычки
Если так, то выводит "да" в условии, то есть должен выполнится, но данные не обновляет

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
или так что ли
А так пишет Unknown column '$id' in 'where clause'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2011, 12:16
Помогаю со студенческими работами здесь

Обновление одних и тех-же данных в двух базах данных
Всем здрасте, как варианты есть для того чтобы обновить данные на двух серверах сразу тоесть когда попадают данные в одну базу данных их-же...

Обновление данных из базы данных в клиентах в реальном времени
Здравствуйте, уважаемые коллеги! Как сделать то, что описано в теме? Расскажу с самого начала откуда пошла такая задача. Есть в...

Обновление данных dataGridView в потоке ошибка BindingSource не может быть источником данных для самого себя
Изучаю потихоньку C#, требуется в отдельном потоке обновлять данные dataGridView. Если не выбирать ячейку или не прокручивать полосу...

Обновление данных в таблице с добавлением новых данных
Уважаемые знатоки, есть проблема с которой сам разобраться не могу, помогите пожалуйста. Вопрос больше к MySql, чем к PHP. но возможно...

Обновление данных в DBGrid после изменения данных
Значит имеется кнопка удаления с DBGrid поля procedure TForm2.Button3Click(Sender: TObject); var n,s:string; begin if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru