Получать пользовательский ввод для запуска php-скрипта с этим значением пользовательского ввода с клавиатуры

#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, который затем можно использовать в скрипте

http://php.net/manual/en/reserved.variables.argv.php