Как заменить входные данные $ _POST на fgets (STDIN) в PHP - PullRequest
0 голосов
/ 30 мая 2019

Я хочу создать приложение PHP CLI CRUD.Я начал с простого создания MySQL-соединения и написания основных функций CRUD.Теперь я хочу принимать данные с помощью PHP CLI, поэтому мне нужно заменить $ _POST на fgets (по крайней мере, я так думаю).Никогда раньше не сталкивался с этим, поэтому буду признателен за любую помощь.

<?php

echo "Welcome to Company Register App" . "\n\n";

//establish database connection
define("DB_SERVER", "localhost");
define("DB_USER", "root");
define("DB_PASSWORD", "root");
define ("DB_NAME", "mydatabase");

$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
if($mysqli === false) {
    echo "Sorry, there seems to be a connection issue.";
} else {
    echo "We are connected". "\n\n";
}

//register function
function addCompany() {

    $name = "";
    $code = "";
    $phone = "";
    $comment = "";
    $id = 0;
    $update = false;

    if (isset($_POST['save'])) {
        $name = $_POST['name'];
        $code = $_POST['code'];
        $phone = $_POST['phone'];
        $comment = $_POST['comment'];

        mysqli_query($mysqli, "INSERT INTO mydatabase (name, code, email, phone, comment) VALUES ('$name', '$code', '$phone', '$comment')"); 

    }
}

?>

Я ожидаю, что смогу запустить этот файл и получить приглашение ввести информацию.

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Проверьте переменные $ argc и $ argv. $ argc должен содержать количество переданных параметров, а $ argv - это массив, содержащий переданные параметры:

https://www.igorkromin.net/index.php/2017/12/07/how-to-pass-parameters-to-your-php-script-via-the-command-line/

Проверьте это на php.net:

https://www.php.net/manual/en/reserved.variables.argv.php

https://www.php.net/manual/en/reserved.variables.argc.php

Но также проверьте функцию ont getopt ():

https://www.php.net/manual/en/function.getopt.php

0 голосов
/ 30 мая 2019

Я изменил все входные данные на fgets для сбора пользовательского ввода из CLI, но все еще получаю сообщение об ошибке при попытке отправить данные в mysql db.

echo "Please enter your name:";
$name = trim(fgets(STDIN, 1024));

echo "Please enter your code:";
$code = trim(fgets(STDIN, 1024));

echo "Please enter your phone:";
$phone = trim(fgets(STDIN, 1024));

echo "Please enter your message:";
$comment = trim(fgets(STDIN, 1024));

$mysqli->query("INSERT INTO register(name, registration_code, email, phone, comment) VALUES('$name','$code','$email','$phone','$comment')");
...