Хорошо, поэтому я немного подумал об этом, но я действительно не хотел начинать, не зная, как я собираюсь это сделать …
Я буду предоставлять базовый автоматический хостинг на своей учетной записи хостинга, где, как пользователь будет проверять сайт, оплачивать хостинг-пакет с помощью PayPal, а IPN делает то, что делает. Это у меня уже на месте и работает. Тем не менее, как бы я набрал скрипт, который будет автоматически после оплаты — создать папку, используя NEXT AUTO_INCREMENT #ID
номер в скажем таблице WebDesign_HostingAccounts
, Таким образом, если следующий идентификатор, который будет использоваться, скажем, # 0005, папка будет называться «0005», и в этой папке автоматически добавится подпапка Public_HTML и загрузится страница Welcome.PHP.
Я знаю, что это будет связано со следующими клипами:
<?php
// Desired folder structure
$structure = './depth1/depth2/depth3/';
// To create the nested structure, the $recursive parameter
// to mkdir() must be specified.
if (!mkdir($structure, 0777, true)) {
die('Failed to create folders...');
}
// ...
?>
Но как мне добавить это в MySQL Query, чтобы проверить следующий идентификатор, а затем загрузить страницу приветствия?
Любые базовые сценарии будут очень полезны! Спасибо!
Я возвращался к своим предыдущим фриланс-проектам, которые я нашел по своему опыту как плохую практику.
Давайте сначала пропустим части public_html и Welcome.php …
Вот часть «сценария»
То, что вы пытаетесь сделать, это:
Теперь вот вопрос: Что делать, если у вас есть 2 клиента и запросили один и тот же запрос одновременно?
Клиент 1 ожидает, что следующий идентификатор auto_increment равен 2
Клиент 2 также ожидает, что следующий идентификатор auto_increment равен 2 (а не 3, потому что еще нет строки из базы данных с 2 как его основной идентификатор, поэтому он также должен получить 2).
Эпическая часть, если Клиент 2 сделал это первым, чтобы закончить свой запрос. Я уверен, что Клиент 1 скоро также завершит свой процесс и попытается создать папку на основе идентификатора AUTO_INCREMENT, но уже существует папка для идентификатора на основе AUTO_INCREMENT. Есть часть избыточности. Эпично, провал.
А вот и главное событие «Решение»
Давайте сделаем это по-другому,
Что за черт? Как получить идентификатор AUTO_INCREMENT из недавно вставленной строки? «
Используйте LAST_INSERT_ID (), встроенную функцию в MySQL, чтобы получить идентификатор AUTO_INCREMENT из последней вставленной строки (что, я полагаю) из последней таблицы, в которую вы вставили определенную строку.
Теперь вот часть чтения относительно этой вещи LAST_INSERT_ID ():
Будет ли возникать конфликт, если другие клиенты также вставят строку в эту таблицу?
Нет, потому что у каждого клиента есть свои отдельные сессии. Это означает, что он возвращает идентификатор автоинкремента только из последней вставленной строки текущего клиента, а не по глобальной ссылке. (Ура для движка MySQL!)
Предупреждение Multi-Insert Query
LAST_INSERT_ID () возвращает идентификатор первой вставленной строки, если вы когда-нибудь задумывались об использовании запроса с несколькими вставками:
INSERT INTO mytable(name, age)
VALUES
("Mark Hernandez", 25),
("Allen Linatoc", 20)
;
Он вернет только идентификатор вставки первый строка, указанная в запросе с несколькими вставками.
Вы можете сделать это быстрее с PHP mysql_insert_id
,
Я не знаю, какую абстракцию / расширение базы данных (PDO, MySQL, MySQLi) вы используете, но вот пример из собственного расширения PHP MySQL: http://php.net/manual/en/function.mysql-insert-id.php
В конце дня всегда лучше обратиться к документации для получения любых разъяснений, которые вам нужны.
Во всяком случае, с вашей стороны говорят:
и в этой папке автоматически добавьте подпапку Public_HTML и загрузите страницу Welcome.PHP.
Я надеюсь, что помог вам разобраться.
Теперь давайте передадим исправление экспертам ^ _ ^
Хорошего дня!
Других решений пока нет …