我正在尝试使用存储过程将数据插入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/

10-11 03:06
查看更多