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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

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

Цитата:
Сообщение от 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, 14:50   #22
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

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, 16:16   #23
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 172
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
0)
5) надеюсь, санитаризировать входные данные не забываете?
Эмм...я не знаю, что это=)
А по поводу всего остального, я решил просто разделить на несколько запросов и все. По поводу даты, тоже спасибо=)
volni вне форума Ответить с цитированием
Старый 13.09.2019, 16:37   #25
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 172
По умолчанию

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

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

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

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

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


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

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


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

Цитата:
Сообщение от 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 в 12:10.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сделать,чтобы запрашивалось сколько вводить строк. наследование класса Евгения Е Общие вопросы C/C++ 7 15.12.2014 13:58
помогите создать запрос чтобы высветился в Делфи galiya123 Помощь студентам 1 26.05.2014 15:19
Как сделать, чтобы DOS выдавал запрос int 21 по русски zla9_kolu4ka Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 11.10.2013 10:07
как выполнить sql запрос в базу mysql по нажатию клавиши в php undead92 PHP 1 06.07.2012 19:17
SQL запрос внесения картинки в базу Darcangel БД в Delphi 5 11.01.2012 08:23


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS