Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не вносятся исправления в БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: функция UPDATE
DonQuijote
Отправлено: 19 Августа, 2015 - 07:40:34
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Здравствуйте форумчане!
вот понять не могу что не так. Новость вставляется в блок редактирования, но после редактирования не сохраняется в БД.
Посмотрите может что накуралесил
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include('../../config/db.php');
  3. ?>
  4. <!doctype html>
  5. <html>
  6. <head>
  7. <meta charset="windows-1251">
  8. <title>Редактор</title>
  9. <script type="text/javascript" src="ckeditor/ckeditor.js"></script>
  10. </head>
  11.  
  12. <body>
  13. <h1 style="color:#C00; text-align:center;">Редактор</h1>
  14. <?PHP
  15. $id = (int) $_GET['id'];
  16. if(isset($_POST['editor1'])) {
  17. $editor_data = $_POST['editor1'];
  18.  
  19. $query = 'UPDATE `news` SET `full_news` = $editor_data WHERE `id` = $id';
  20. if ($mysqli->query($query)){
  21.         echo '<h2>Новость отредактирована</h2>';
  22. }
  23. else echo 'Не удалось отредактировать новость'.$mysqli->connect_error;
  24.  
  25. }
  26. ?>
  27.  
  28. <form method="post">
  29.     <p>
  30.     <textarea id="editor1" name="editor1">
  31.     <?PHP
  32. $id = (int) $_GET['id'];
  33. $sql_get_full_news = $mysqli->query('SELECT * FROM `news` WHERE `id` = '.$id.'');
  34. while($row = mysqli_fetch_array($sql_get_full_news)) {
  35.         $id = $row['id'];
  36.         $title = $row['title'];
  37.         $full_news = $row['full_news'];
  38.         $date_pub = $row['date_pub'];
  39.        
  40.         $output_full_news .= $full_news;
  41. }
  42.         echo $output_full_news;
  43.         ?>
  44.     </textarea>
  45.     <script type="text/javascript">
  46.     CKEDITOR.replace( 'editor1' );
  47.     </script>
  48.     </p>
  49.     <p><input type="submit" value="Отредактировать" /></p>
  50. </form>
  51. </body>
  52. </html>
 
 Top
Sail
Отправлено: 19 Августа, 2015 - 09:41:01
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




DonQuijote, после 19-й строки напишите:

Увидите, какой запрос сформировали.
И в ветке else не $mysqli->connect_error, а $mysqli->error;
 
 Top
DonQuijote
Отправлено: 19 Августа, 2015 - 10:08:09
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Sail пишет:
DonQuijote, после 19-й строки напишите:

Увидите, какой запрос сформировали.
И в ветке else не $mysqli->connect_error, а $mysqli->error;



Вот такое выводит
PHP:
скопировать код в буфер обмена
  1. UPDATE `news` SET `full_news` = $editor_data WHERE `id` = $idНе удалось отредактировать новостьUnknown column '$id' in 'where clause'

(Добавление)
Сделал так
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include('../../config/db.php');
  3. ?>
  4. <!doctype html>
  5. <html>
  6. <head>
  7. <meta charset="windows-1251">
  8. <title>Редактор</title>
  9. <script type="text/javascript" src="ckeditor/ckeditor.js"></script>
  10. </head>
  11.  
  12. <body>
  13. <h1 style="color:#C00; text-align:center;">Редактор</h1>
  14. <?PHP
  15. $id = (int) $_GET['id'];
  16. if(isset($_POST['editor1'])) {
  17. $editor_data = $_POST['editor1'];
  18.  
  19. $query =
"UPDATE `news` SET `full_news` = '$editor_data' WHERE `id` = '$id'";
PHP:
скопировать код в буфер обмена
  1.  
  2. if ($mysqli->query($query)){
  3.         echo '<h2>Новость отредактирована</h2>';
  4. }
  5. else echo 'Не удалось отредактировать новость'.$mysqli->error;
  6.  
  7. }
  8. ?>
  9.  
  10. <form method="post">
  11.     <p>
  12.     <textarea id="editor1" name="editor1">
  13.     <?PHP
  14. $id = (int) $_GET['id'];
  15. $sql_get_full_news = $mysqli->query('SELECT * FROM `news` WHERE `id` = '.$id.'');
  16. while($row = mysqli_fetch_array($sql_get_full_news)) {
  17.         $id = $row['id'];
  18.         $title = $row['title'];
  19.         $full_news = $row['full_news'];
  20.         $date_pub = $row['date_pub'];
  21.        
  22.         $output_full_news .= $full_news;
  23. }
  24.         echo $output_full_news;
  25.         ?>
  26.     </textarea>
  27.     <script type="text/javascript">
  28.     CKEDITOR.replace( 'editor1' );
  29.     </script>
  30.     </p>
  31.     <p><input type="submit" value="Отредактировать" /></p>
  32. </form>
  33. </body>
  34. </html>
 
 Top
Мелкий Супермодератор
Отправлено: 19 Августа, 2015 - 10:53:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




http://php.net/manual/en/mysqli....d-statements.php

Никогда не конкатенируйте данные и запрос.


-----
PostgreSQL DBA
 
 Top
DonQuijote
Отправлено: 19 Августа, 2015 - 11:00:09
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Мелкий пишет:
http://php.net/manual/en/mysqli....d-statements.php

Никогда не конкатенируйте данные и запрос.


Спасибо конечно, но я ничего не понял.
 
 Top
Мелкий Супермодератор
Отправлено: 19 Августа, 2015 - 11:08:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ок, поясняю. Вот так:
DonQuijote пишет:
UPDATE `news` SET `full_news` = $editor_data WHERE `id` = $id

Делать нельзя. Используйте prepared statements.

Вместо с этим сразу появится иммунитет к большинству sql-инъекций, и как частное проявление оной, исправится ваше редактирование записи.


-----
PostgreSQL DBA
 
 Top
DonQuijote
Отправлено: 19 Августа, 2015 - 13:18:55
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Мелкий пишет:
Ок, поясняю. Вот так:
DonQuijote пишет:
UPDATE `news` SET `full_news` = $editor_data WHERE `id` = $id

Делать нельзя. Используйте prepared statements.

Вместо с этим сразу появится иммунитет к большинству sql-инъекций, и как частное проявление оной, исправится ваше редактирование записи.


так у меня вот так
PHP:
скопировать код в буфер обмена
  1. $query ="UPDATE `news` SET `full_news` = '$editor_data' WHERE `id` = '$id'";
 
 Top
Мелкий Супермодератор
Отправлено: 19 Августа, 2015 - 13:21:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Никакой разницы.


-----
PostgreSQL DBA
 
 Top
DonQuijote
Отправлено: 19 Августа, 2015 - 13:24:30
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Мелкий пишет:
Никакой разницы.


Подскажите тогда как сделать. Я ещё только начинаю с этим делом
 
 Top
Мелкий Супермодератор
Отправлено: 19 Августа, 2015 - 13:32:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Мне в третий раз написать?
Мелкий пишет:
Используйте prepared statements.

Ссылка на официальную краткую обучалку уже дана.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB