Uncaught ArgumentCountError: слишком мало аргументов для работы - PullRequest
0 голосов
/ 06 января 2019

Я хочу сохранить данные с помощью метода $_POST в базе данных, используя PDO с PHP. Я написал код, но он дал мне ошибку. Кто-нибудь может это понять?

macex.php

function daireekle($daire_no,$dpass,$daire_statu,$daire_adi,$daire_soyadi){
    $sql ="insert into users (KULLANICIADI,SIFRE,TIPI,ADI,SOYADI) values ('$daire_no','$dpass','$daire_statu','$daire_adi','$daire_soyadi')";
    $insert =$this->connection->query($sql);
}

Blok.html

<?php
$sinif = new macex();
if ($_POST) {
    $daire_no = $_POST['daireno'];
    $daire_adi = $_POST['daireadi'];
    $daire_soyadi = $_POST['dairesoyadi'];
    $daire_statu = $_POST['statu'];
    $dpass = $_POST['dpass'];
    $sinif->daireekle('users', ['KULLANICIADI', 'SIFRE', 'TIPI', 'ADI', 'SOYADI'], [$daire_no, $dpass, $daire_statu, $daire_adi, $daire_soyadi]);
}
?>

1 Ответ

0 голосов
/ 07 января 2019

Ваш код немного сложен для понимания с точки зрения структуры, но вы определенно неправильно используете PDO, вводя неанизированные POST данные.

Если бы я попытался преобразовать ваш образец во что-то работающее, я бы предложил следующие поправки:

( Примечание : при условии, что $this->connection-> является вашим объектом PDO)

Blok.html (не знаю, почему вы назвали этот PHP файл Blok.html)

<?php
$sinif = new macex();
if ($_POST) {
    $sinif->daireekle( $_POST );
}
?>

macex.php

function daireekle( $postArray ){

// Parameterised PDO will mostly prevent SQL Injection, but it's still best practice 
// to validate and sanitize your inputs, especially if they are coming from the user
$daire_no = $postArray ['daireno'];
$daire_adi = $postArray ['daireadi'];
$daire_soyadi = $postArray ['dairesoyadi'];
$daire_statu = $postArray ['statu'];
$dpass = $postArray ['dpass'];

// Define the query with positional params
$sql = 'INSERT INTO users (KULLANICIADI, SIFRE, TIPI, ADI, SOYADI) VALUES (?,?,?,?,?)';

// Create an array of your params in the order they apply to the query
$paramsArray = array('$daire_no','$dpass','$daire_statu','$daire_adi','$daire_soyadi');

// Prepare the parameterised query
$query = $this->connection->prepare($sql);

// Execute the INSERT query with the parameters
$query->execute($paramsArray);

}

Конечно, вы можете использовать различные варианты вышеупомянутых, включая именованные параметры, но это кратко объяснить в соответствии с вышеизложенным.

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