Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Цитата:
Сообщение от 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,238
По умолчанию

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
Сообщений: 188
По умолчанию

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

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

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

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

Это от XSS инъекций.
От SQL инъекций другие функции, но лучше prepared statement.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.09.2019, 11:26   #28
volni
Форумчанин
 
Регистрация: 16.03.2019
Сообщений: 188
По умолчанию

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


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

Цитата:
Сообщение от 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,238
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сделать,чтобы запрашивалось сколько вводить строк. наследование класса Евгения Е Общие вопросы C/C++ 7 15.12.2014 13:58
помогите создать запрос чтобы высветился в Делфи galiya123 Помощь студентам 1 26.05.2014 16:19
Как сделать, чтобы DOS выдавал запрос int 21 по русски zla9_kolu4ka Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 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