我正在尝试使用存储过程将数据插入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...
但这仍然使潜在的注入问题悬而未决。
关于php - 使用PHP中的存储过程将数据插入sql数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27108917/