#php #user-input
#php #пользовательский ввод
Вопрос:
У меня есть php-скрипт, который я запускаю из командной строки в Linux (НЕ интерактивный), который выполняет поиск в базе данных mysql и на основе значения поля «SentOrNotSent» либо отправляет электронные письма, либо нет. Он отлично работает, этот php-скрипт.
Теперь я хочу изменить скрипт таким образом, чтобы при первом запуске он запрашивал номер «ID» для ввода с клавиатуры, затем он переходит в базу данных MySQL и удаляет запись с этим идентификатором. Я знаю, как выполнить удаление, я не понимаю, как заставить этот скрипт запрашивать ввод, а затем использовать это значение для части инструкции mysql update для удаления записи.
Этот скрипт запускается ТОЛЬКО из командной строки и базируется в каталоге, к которому имеет доступ ТОЛЬКО администратор.
спасибо за любую помощь.
Ответ №1:
Вы можете либо проверить наличие аргументов командной строки с помощью $argc (количество аргументов cli), либо $ argv (массив фактических значений аргументов). Или вы можете запросить ввод и получить этот ввод, прочитав стандартный ввод (STDIN).
Учитывая командную строку:
$ ./myscript 1234
myscript.php:
<?php
if (isset($argv[1])) {
$myid = (int)$argv[1]; // use the command line argument for ID
} else {
print("Enter an ID number: ");
$myid = (int)fgets(STDIN); // prompt the user for an ID
}
... proceed with $myid = 1234 or whatever you entered.
Комментарии:
1. Спасибо! Это делает это здорово!
Ответ №2:
Одна строка кода (строка 2):
<?php
$id = trim(shell_exec("read -p 'Enter your ID: ' idnecho $id"));
echo "The ID you entered was $id (this is PHP speaking… do your database stuff next…)n";
exit;
Проверьте источник этого ответа по адресу http://oneqonea.blogspot.com/2012/04/how-can-i-capture-user-input-from-cmd.html
Ответ №3:
«php script.php 1234» просто добавьте идентификатор, это действительно должно быть интерактивным? 1234 будет в массиве $ argv, который затем можно использовать в скрипте