我正在尝试使用存储过程将数据插入到 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 语句正在工作。 真的需要知道我是否正确执行了调用过程或者出了什么问题
最佳答案
您的 SQL 无效。您的存储过程值都没有被引用,因此您生成的内容看起来像
CALL prc_emp_add(John, Doe, jdoe@example.com, ...)
这也意味着您容易受到 sql injection attacks 的攻击.
快速/立即修复是引用这些值:
$mysqli->query("CALL prc_emp_add('".$firstname."','".$lastname." etc...
^--------------^-^---etc...
但这仍然留下了潜在的注入(inject)问题。
关于php - PHP中使用存储过程将数据插入sql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27108917/