php - PHP中使用存储过程将数据插入sql数据库

标签 php mysql stored-procedures

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

相关文章:

mysql 参数添加不评估

sql - GridView - 过程或函数指定的参数太多

php - CodeIgniter 中的 Paypal

php - 允许用户编辑 php 代码并安全地提交结果

php - 在 Blade 代码中插入 Blade 代码

mysql - 表引用一个表,该表又引用另一个表

java - 无法从 mybatis 执行的 oracle 过程中接收参数

php - Google Freebase API 一次获取名称、图像和文本

sql - 有关 MySQL SELECT WHERE 子句的帮助

mysql - 使用跨所有列的多个 Ruby 查询创建 CSV