Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 13.09.2019, 15:29   #21
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 85
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
тут всё сложнее.

вот он заходит и УДАЛЯЕТ строчку с "Основание " = 3
ваши действия?

дальше, он заходит и исправляет строчку с "Основание" = 2 на "Основание" = 5, строчку с Основание = 1 исправляет на Основание = 6
и дописывает новую строчку с Основание 1
ваши действия?

На самом деле, тут множество вариантов и подводных камней (учитывать логгирование - кто что исправил, например, надо или нет).
Можно ли вносить записи в произвольном порядке?

в общем случае, я бы поступал так:
Код:
Lock Table in_copies
Delete FROM in_copies where DocumentNumber  = <вашДокументId>
INSERT INTO in_copies ...... <все строчки из HTML таблицы>
UnLock Table  in_copies
Lock / UnLock - это в случае, если есть опасность, что два пользователя могут изменять один документ.
Пробую так сделать. Не подскажите, в чем ошибка здесь? Пишет, что именно в SQL синтаксисе.
Код:
$sql2 = "Lock Table in_copies;";
					$sql2 .= "Delete FROM in_copies where DocumentNumber=$DocumentNumber;";
					$sql2 .= "Insert INTO in_copies (DocumentNumber, CopyData, ReasonCopy, CopyCome, CopyGo)
								VALUES ('$DocumentNumber','$Date[$i]','$ReasonCopy[$i]','$CopyCome[$i]','$CopyGo[$i]');";
					$sql2 .= "Unlock Table in_copies";
					
					if (mysqli_multi_query($conn, $sql2)) {
					  echo "New record created successfully(Copies)";
					} else {
					  echo "Error: " . $sql2 . "<br>" . mysqli_error($conn);
					}
volni на форуме   Ответить с цитированием
Старый 13.09.2019, 15:50   #22
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,089
Репутация: 5656
По умолчанию

0) ошибка какая?
1) Выведите sql2 (echo на страницу или fwrite() в файл) и посмотрите что так.
2) даты так вставлять - поиметь глюки и баги (причём трудноуловимые и отложенные)
тут должно быть по такому сценарию
Код:
$rawdate = htmlentities($_POST['date']);
$date = date('Y-m-d', strtotime($rawdate));
$query = "INSERT INTO user_post (date) VALUES ('$date')";
3) $i - это же похоже - из цикла вырвано!
4) я бы строчку с параметрами собирал через .
Код:
$sql2 .= "Insert INTO in_copies (DocumentNumber, CopyData, ReasonCopy, CopyCome, CopyGo) " .
 " VALUES ('$DocumentNumber','".$Date[$i]."','".$ReasonCopy[$i]."','".$CopyCome[$i]."','".$CopyGo[$i]."');";
5) надеюсь, санитаризировать входные данные не забываете?


p.s. mysqli_multi_query() никогда не использовал...
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 13.09.2019, 17:16   #23
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 85
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
0)
5) надеюсь, санитаризировать входные данные не забываете?
Эмм...я не знаю, что это=)
А по поводу всего остального, я решил просто разделить на несколько запросов и все. По поводу даты, тоже спасибо=)
volni на форуме   Ответить с цитированием
Старый 13.09.2019, 17:20   #24
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,270
Репутация: 3739

icq: 512-765
skype: alexp.frl
По умолчанию



https://www.google.com/search?q=sql+injection

https://en.wikipedia.org/wiki/Prepar...tement#PHP_PDO

www.phptherightway.com/#databases / http://getjump.github.io/ru-php-the-...BD%D1%8B%D1%85

https://phpdelusions.net/pdo
Alex11223 на форуме   Ответить с цитированием
Старый 13.09.2019, 17:37   #25
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 85
Репутация: 10
По умолчанию

Я правильно понимаю, что это фиксится с помощью htmlentities?
volni на форуме   Ответить с цитированием
Старый 13.09.2019, 17:58   #26
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,089
Репутация: 5656
По умолчанию

Цитата:
Сообщение от volni Посмотреть сообщение
Я правильно понимаю, что это фиксится с помощью htmlentities?
не совсем.
почитайте http://phpfaq.ru/mysql/slashes

Цитата:
Сообщение от volni Посмотреть сообщение
Не подскажите, в чем ошибка здесь? Пишет, что именно в SQL синтаксисе.
с ошибкой то удалось разобраться?
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 13.09.2019, 18:00   #27
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,270
Репутация: 3739

icq: 512-765
skype: alexp.frl
По умолчанию

Это от XSS инъекций.
От SQL инъекций другие функции, но лучше prepared statement.
Alex11223 на форуме   Ответить с цитированием
Старый 16.09.2019, 12:26   #28
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 85
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не совсем.
почитайте http://phpfaq.ru/mysql/slashes


с ошибкой то удалось разобраться?
Здравствуйте, я вроде писал, что ушел от множественного запроса,сделав просто несколько запросов)
volni на форуме   Ответить с цитированием
Старый 16.09.2019, 12:33   #29
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 85
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не совсем.
почитайте http://phpfaq.ru/mysql/slashes


с ошибкой то удалось разобраться?
По поводу sql инъекций сейчас буду разбираться. Еще такой вопрос, при добавлении htmlentities в конструкцию типа
Код:
$Sheet = htmlentities($_POST['Sheet']);
Если теперь ввожу русские буквы, на сервер приходят разного рода символы типа Ã. Но до htmlentities все было хорошо, как это можно пофиксить?)
volni на форуме   Ответить с цитированием
Старый 16.09.2019, 12:49   #30
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,089
Репутация: 5656
По умолчанию

Цитата:
Сообщение от volni Посмотреть сообщение
Если теперь ввожу русские буквы, на сервер приходят разного рода символы типа Ã. Но до htmlentities все было хорошо, как это можно пофиксить?)
так нужно спецсимволы декодировать обратно в символы
см.
https://www.php.net/manual/ru/functi...ity-decode.php

p.s.
впрочем, у меня русские буквы и так выдаются нормально:
Код:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"></head>
<?php
if(isset($_POST['Sheet']))
{
$Sheet = htmlentities($_POST['Sheet']);
echo $Sheet;
}
?>
<body>
<form method="post">
<input type="text" name="Sheet" ></div>
<input type="submit" value="Отправить">
</form>
</body>
</html>

Последний раз редактировалось Serge_Bliznykov; 16.09.2019 в 13:10.
Serge_Bliznykov на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сделать,чтобы запрашивалось сколько вводить строк. наследование класса Евгения Е Общие вопросы C/C++ 7 15.12.2014 14:58
помогите создать запрос чтобы высветился в Делфи galiya123 Помощь студентам 1 26.05.2014 16:19
Как сделать, чтобы DOS выдавал запрос int 21 по русски zla9_kolu4ka Assembler 3 11.10.2013 11:07
как выполнить sql запрос в базу mysql по нажатию клавиши в php undead92 PHP 1 06.07.2012 20:17
SQL запрос внесения картинки в базу Darcangel БД в Delphi 5 11.01.2012 09:23


15:46.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.