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

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

28.07.2011, 14:49. Показов 5237. Ответов 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
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
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
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
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
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru