我正在尝试使用存储过程将数据插入到php中的sql数据库中。我似乎无法将数据输入数据库。我是php和存储过程的新手,所以不太了解它们。
我有一个名为addemployee()的函数,其中正在使用存储过程
function addemployee($firstname, $lastname,$email,$username,$dateofbirth,$ppsn,$password, $admin)
{
$mysqli = new mysqli('localhost', 'root', '');
$mysqli->query("CALL prc_emp_add(".$firstname.",".$lastname." , ".$email.", ".$username.", ".$dateofbirth.", ".$ppsn.", ".$password.", $admin)");
echo 'GOT HERE';
//mysqli_query($db, $query) or die(mysqli_error($db));
}
然后在另一个文件中,我调用该函数并传递变量
addemployee($_POST['firstname'],$_POST['lastname'],$_POST['email'],$_POST['username'],$_POST['dateofbirth'],$_POST['ppsn'],$_POST['password'],$admin);
当我对函数中的数据执行var_dump时已经通过,所以我知道数据存在,并且echo语句也正常工作。 真的需要知道我正确地执行了呼叫程序还是出了什么问题
答案 0 :(得分:0)
您的SQL无效。您没有引用任何存储过程值,因此您生成了类似
的内容CALL prc_emp_add(John, Doe, jdoe@example.com, ...)
这也意味着您容易受到sql injection attacks的攻击。</ p>
快速/即时修复是引用值:
$mysqli->query("CALL prc_emp_add('".$firstname."','".$lastname." etc...
^--------------^-^---etc...
但这仍然会导致潜在的注入问题。