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
Форумы портала PHP.SU :: Версия для печати :: Не вносятся исправления в БД
Форумы портала PHP.SU » » Вопросы новичков » Не вносятся исправления в БД

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

1. DonQuijote - 19 Августа, 2015 - 07:40:34 - перейти к сообщению
Здравствуйте форумчане!
вот понять не могу что не так. Новость вставляется в блок редактирования, но после редактирования не сохраняется в БД.
Посмотрите может что накуралесил
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>
2. Sail - 19 Августа, 2015 - 09:41:01 - перейти к сообщению
DonQuijote, после 19-й строки напишите:

Увидите, какой запрос сформировали.
И в ветке else не $mysqli->connect_error, а $mysqli->error;
3. DonQuijote - 19 Августа, 2015 - 10:08:09 - перейти к сообщению
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>
4. Мелкий - 19 Августа, 2015 - 10:53:13 - перейти к сообщению
http://php.net/manual/en/mysqli....d-statements.php

Никогда не конкатенируйте данные и запрос.
5. DonQuijote - 19 Августа, 2015 - 11:00:09 - перейти к сообщению
Мелкий пишет:
http://php.net/manual/en/mysqli....d-statements.php

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


Спасибо конечно, но я ничего не понял.
6. Мелкий - 19 Августа, 2015 - 11:08:12 - перейти к сообщению
Ок, поясняю. Вот так:
DonQuijote пишет:
UPDATE `news` SET `full_news` = $editor_data WHERE `id` = $id

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

Вместо с этим сразу появится иммунитет к большинству sql-инъекций, и как частное проявление оной, исправится ваше редактирование записи.
7. DonQuijote - 19 Августа, 2015 - 13:18:55 - перейти к сообщению
Мелкий пишет:
Ок, поясняю. Вот так:
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'";
8. Мелкий - 19 Августа, 2015 - 13:21:02 - перейти к сообщению
Никакой разницы.
9. DonQuijote - 19 Августа, 2015 - 13:24:30 - перейти к сообщению
Мелкий пишет:
Никакой разницы.


Подскажите тогда как сделать. Я ещё только начинаю с этим делом
10. Мелкий - 19 Августа, 2015 - 13:32:53 - перейти к сообщению
Мне в третий раз написать?
Мелкий пишет:
Используйте prepared statements.

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

 

Powered by ExBB FM 1.0 RC1