在我的 mySQL 数据库中,我创建了一个 API,用于使用存储过程从外部使用数据库。
我为这个任务设置了一个只有 EXECUTE 权限的特殊用户 - 以防止 SQL 注入。
我有一个用户 id 连接表,我需要创建一个包含未知数量参数的过程 - 该过程应该将他收到的所有 id 插入表中。
现在我将 PHP 与 mysqli 一起使用,我正在创建我自己的查询 - 这是非常不安全的 - 它看起来像这样:
/**
* Add new rows to the invited users tables
* @param $invitingUser string the inviting user facebook's Id
* @param $invitedUsers array the invited users facebook's Id
*/
function addInvitedUsers($invitingUser, $invitedUsers)
{
//check if all the parameters are set
if (isset($invitingUser) && isset($invitedUsers))
{
//create the basic query for insert
$query = "Insert Into Invited_Users (Inviting_id,Invited_Id) Values ";
//for each invited users - add it to the query
foreach($invitedUsers as $invitedUser)
$query . "('$invitingUser','$invitedUser') ";
if ($this->queryDb($query));
echo "added new invited users";
}
//if parameters are not set - message
else
echo "parameters can't be null";
}
我想创建一个程序,给我同样的能力..
我确实知道我不能将数组或未定义数量的参数发送到存储过程,但我确信还有其他方法可以在安全模式下实现相同的能力..