

Юрий
19.12.2018
11:23:43
Привет, ребята! Спасибо большое что помагаете! и что растолковали все.. но у меня есть вопрос по uuid. uuid формирует свои 13 цифр на основе меток времени. Он же не кодирует строку, которая непосредственно передается в функцию? если кодирует именно внешнюю строку , что передается в функцию, то нет вопросов..
но если не кодирует - то есть..
вот пример есть предв сформир. $tmp_order_id 11223344 что план запис в БД. В текущий момент времени uuid сформирует для него строку $tmp_uuid = abcdefghtjy12 Но в след проход, если будет сформир такой же $tmp_order_id 11223344 - uuid сформирует ИНУЮ строку $tmp_uuid = abcdefghtjy99 ...
Или я не прав?
Значит нужно при вставке в БД проверять SELECT * FROM orders WHERE order_id = $tmp_order_id AND uuid=$tmp_uuid - Если вернется 0 строк - тогда вставлять! Если вернул строку - формируем новый $tmp_order_id b $tmp_uuid.
Верно?
ИЛИ НАПИШИТЕ SQL по которому вы ПРЕДЛАГАЕТЕ осуществлять проверку на уникальность order_id в БД. Огромное вам спасибо!
спасибо.. ну ссори.. я не прав? что-то не понимаю..


Nibbler
19.12.2018
11:26:31
бд как? учил

Юрий
19.12.2018
11:27:44

Google

Nibbler
19.12.2018
11:29:10
можешь сделать вложенный запрос
можешь оьработать через exception

Антон
19.12.2018
11:29:34
бд как? учил
ну че ты сразу наехал, ну тупит чувак, ты же тоже тупишь)))

Юрий
19.12.2018
11:31:31
ребята я не такой мега профи как вы.. я здесь для того чтобы учится у более понимающих и опытных прогеров! а не вас нервничать. Просто поясните в чем мое недопонимание и как правильно делать ПРОВЕРКУ. Если я пойму как правильно дел прверку исчезнут и вопросы
у меня с БД реально плохие отношения)) КАк сделать влож запрос или exception можно чуток кода для примера..

Nibbler
19.12.2018
11:34:08
я тебе три подсказки дал

Антон
19.12.2018
11:35:59
в чем?
ну человек много раз извинился что вообще сюда написал, а ты сразу БД УЧИЛ? ))

Nibbler
19.12.2018
11:36:19
это просто уточнение
хотел бы нагрубить
сказал иди в гугл

Антон
19.12.2018
11:37:03

Юрий
19.12.2018
11:37:04

Google

Антон
19.12.2018
11:38:46

Юрий
19.12.2018
11:39:18
Ошибка!
я не понимаю как перехватить эту ошибку и в случае ошибки сформировать новый $tmp_order_id

Антон
19.12.2018
11:40:33
Ошибка!
мамкин сын предлагает ее ловить и обрабатывать

Юрий
19.12.2018
11:41:03

Nibbler
19.12.2018
11:41:27
try {} catch {} finally {}

Антон
19.12.2018
11:41:37
не умею!!!
а у тебя нативная пыха или может фреймворк какой есть?

Юрий
19.12.2018
11:42:26

Nibbler
19.12.2018
11:42:31
?

Юрий
19.12.2018
11:42:44
throw exeption ???

Nibbler
19.12.2018
11:42:56
ну посыл ты понял да

Антон
19.12.2018
11:43:18
но тут нужно понять как ты запросы в базу отправляешь, возможно исключения не будет)

Nibbler
19.12.2018
11:44:47
и когда не будет

Google

Антон
19.12.2018
11:45:38

Nibbler
19.12.2018
11:45:54
ска %))))

Юрий
19.12.2018
11:47:28
SELECT * FROM orders WHERE order_id = $tmp_order_id AND uuid=$tmp_uuid
Вот запрос для проверки!!

Nibbler
19.12.2018
11:47:42
долгий
SELECT count(id) FROM orders WHERE order_id = $tmp_order_id AND uuid=$tmp_uuid
хотя мой может быть не менее долгим ?

sergey
19.12.2018
11:56:53
Да уж.

dypa
19.12.2018
11:58:31

Юрий
19.12.2018
11:59:17
SELECT count(id) FROM orders WHERE order_id = $tmp_order_id а такой может вернуть строки!

sergey
19.12.2018
11:59:43
всегда
вернет
одну строку

Антон
19.12.2018
11:59:51
аааа как тут весело )))

dypa
19.12.2018
12:00:30
♿

sergey
19.12.2018
12:00:53
=) лучше откатиться на ночной вариант ) он был не таким безысходным

Юрий
19.12.2018
12:04:58
$q = 'SELECT count(id) FROM orders WHERE order_id = "'.$tmp_order_id.'" ';
$order_inserted = false;
while ($order_inserted === false) {
try {
$res = $this->db->rawQuery($q);
if ($res) {
throw new Exception("row exists");
} else {
$order_inserted = true;
}
} catch (Exception $e) {
}
}
Вот так?
https://github.com/ThingEngineer/PHP-MySQLi-Database-Class
обертка для работы с БД что использую

Pavel
19.12.2018
12:07:12
Слушайте а что такое фикстура в тестах?

dypa
19.12.2018
12:07:23
Вот так?
заполни таблицу на 50% и посмотри как изменится в худшую сторону время вставки

Google

dypa
19.12.2018
12:07:47

Dmitry
19.12.2018
12:08:09
это для функциональщины, базу заполнить, да

Pavel
19.12.2018
12:08:25
https://en.wikipedia.org/wiki/Test_fixture
Это что-то типа юнита в юнит-тесте :)

dypa
19.12.2018
12:10:35
A software test fixture sets up the system for the testing process by providing it with all the necessary code to initialize it

Pavel
19.12.2018
12:11:49
Ну вот, то есть это не данные, а атомарный запускатор теста с данными
Просто тут в C# есть фреймворк NUnit и у него как раз класс который содержит в себе тесты помечается аннотацией [TestFixture]

dypa
19.12.2018
12:12:45
первичная настройка системы + первичные данные - я понимаю это так

Pavel
19.12.2018
12:16:06
По идее тогда тело тестов должно быть вне фикстуры

dypa
19.12.2018
12:48:30

Nibbler
19.12.2018
12:51:26

dypa
19.12.2018
12:55:00

Nibbler
19.12.2018
12:56:00
гугл не помог ?
хотел переписать и случайно удалил

Антон
19.12.2018
12:58:07

Nibbler
19.12.2018
12:58:52
блэт обертку еще пользует
тогда изи

Google

Nibbler
19.12.2018
12:59:21
$id = $db->insert (‘order’, $data);
if ($id)
echo 'user was created. Id=' . $id;
else
echo 'insert failed: ' . $db->getLastError();

Pavel
19.12.2018
12:59:30

Nibbler
19.12.2018
12:59:37
прям в доке написано все.

Антон
19.12.2018
13:00:00

Nibbler
19.12.2018
13:00:03
как на кладбище. Женщин и детей не вижу

Pavel
19.12.2018
13:00:19

Nibbler
19.12.2018
13:00:35
а где эксепшен?
да не нужен, там же обертка делает как понимаю. под капот не полезу.

Антон
19.12.2018
13:01:04

Nibbler
19.12.2018
13:01:17
я просто сходит в доку которую он прислал
я думал у него нет обертки ?

Антон
19.12.2018
13:01:50