【发布时间】:2019-06-01 13:47:06
【问题描述】:
我想使用 PDO 和 PHP 将具有 $_POST 方法的数据保存到数据库中。我写了代码,但它给了我一个错误。有没有人能解决这个问题?
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);
}
块.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]);
}
?>
【问题讨论】:
-
所以,首先,要明确的是,
daireekle()是一个类的方法,对吧?其次,您的函数接受 5 个参数,而您只发送 3 个:'users', array, array。在提供的代码中,您不接受“用户”和第一个数组。您只接受第二个数组的值。 -
要么更改函数
daireekle(),要么更改对它的调用。您现在调用它的方式可能对将来的使用更加灵活,BUT 无论如何它都对 sql 注入开放。所以宁愿改变那个函数来使用准备好的语句。 -
警告:您对SQL Injections 持开放态度,应该真正使用参数化Prepared Statements,而不是像那样手动构建查询。特别是因为您根本没有逃避用户输入!