$ _POST не работает в PHP 7.2.0 - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь отправить данные формы в функцию PHP, используя метод POST, но он не работает. Я использую Apache и PHP v.7.2.0. Это моя форма:

<form  action="<?php echo $proc; ?>?function=edit" method="POST" 
enctype="multipart/form-data">
                    <div class="form-group">

                        <label>Name</label>
                        <input type="text" name="firstName">
                    </div>                  
                    <input type="hidden" name="id" class="id">
                    <button class="btn btn-default btn-block" type="submit">Save</button>
                </form>

Иэто моя функция PHP:

function edit() {
$connection = Database::getConnection();
$id = $_POST["id"];
$firstName = $_POST["firstName"];
$query = "UPDATE person SET
            firstName = '{$firstName}',
            WHERE idPerson = {$id}";

if(!mysqli_query($connection, $query)){
    return 1;

}

return 0;
}

Это класс базы данных:

<?php

class Database {

    private static $db;
private $connection;

private function __construct() {
    $this->connection = new mysqli("localhost","root","","my_db");
}

function __destruct() {
    $this->connection->close();
}

public static function getConnection() {
    if (self::$db == null) {
        self::$db = new Database();
    }
    return self::$db->connection;
}
}

?>

Странно то, что я не получаю никаких сообщений об ошибках.

1 Ответ

0 голосов
/ 24 мая 2018

Кажется, есть некоторая путаница относительно того, что делают параметры get, если у вас нет какого-то внутреннего обработчика, который принимает значение $ _GET ['function'] и вызывает функцию с тем же именем.Не делайте этого, если это то, что вы делаете.

Если вы оставили свою форму точно такой, как есть, вы можете вызвать edit в PHP, выполнив следующее:

if(isset($_GET['function']) && $_GET['function'] == 'edit')
{
    edit();
}

Дополнительно,Ваша функция редактирования возвращает значения.Вам решать что-то сделать с этими значениями ...

$res = edit();
if($res){
    //do something
}
else
{
    // do something else
}

Есть много способов добиться того, что вы делаете, что лучше, но ради простоты давайте просто скажем, что размещение«function = edit» в URL не будет вызывать функцию с тем же именем.Насколько я знаю, PHP никогда не вел себя таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...