我有一个PHP函数。该函数检查名称,如果它们不存在,则终止。它从名称中去掉空格,如果当前登录用户的名称尚未在列表中,则添加当前登录用户的名称。
function create_group($name, $description, $invites){
global $link;
$invitesarr = explode(',', $invites);
$user_id = $_SESSION['user_id']; //avoids issues with quotations (either invalid quotation for referring to PHP variable or repeated double quotes)
$result = mysqli_query($link, "SELECT `username` FROM `users` WHERE `user_id` = '$user_id'");
foreach($result as $resul){
foreach($resul as $resu){
$logged_in_username = $resu;
}}
if(in_array($logged_in_username, $invitesarr)){
}else{
$invitesarr[] = $logged_in_username;
}
foreach($invitesarr as $invite) {
$idres = mysqli_query($link, "SELECT `user_id` FROM `users` WHERE `username` = '$invite'");
$invite = preg_replace('/'s+/', '', $invite);
print $invite;
if(mysqli_num_rows($idres) == 0) {
exit("1 or more of the users that you entered do(es) not exist!");
}
}
$name = mysqli_real_escape_string($link, $name);
$description = mysqli_real_escape_string($link, $description);
$names = mysqli_query($link, "SELECT `group_name` FROM `groups` WHERE `group_name` = '$name'");
$descriptions = mysqli_query($link, "SELECT `group_description` FROM `groups` WHERE `group_description` = '$description'");
if(mysqli_num_rows($names) == 0 && mysqli_num_rows($descriptions) == 0) {
mysqli_query($link, "INSERT INTO `groups` (`group_name`, `group_description`) VALUES ('$name', '$description')");
} else {
echo 'Group with that name/description already exists.';
}
$result = mysqli_query($link, "SELECT `group_id` FROM `groups` WHERE `group_name` = '$name'");
foreach($result as $resul) {
foreach($resul as $resu) {
$group_id = $resu;
}
}
foreach($invitesarr as $invite) {
$idres = mysqli_query($link, "SELECT `user_id` FROM `users` WHERE `username` = '$invite'");
foreach($idres as $idarr) {
foreach($idarr as $id) {
mysqli_query($link, "INSERT INTO `group_members` (`group_id`, `user_id`, `confirmed?`) VALUES ('$group_id', '$id', 0)");
}
}
}
}
它工作得很好,除了当用户输入他们的名字并进入$invitesarr数组时。当我在检查名字的foreach语句中放入print语句时,我注意到,当用户的名字没有输入到字段中时,这些名字的顺序是name1 loggedinname,而当我输入用户的名字时,它变成了loggedinname name1。
您需要输入:
$invite = preg_replace('/'s+/', '', $invite);
前行:
$idres = mysqli_query($link, "SELECT `user_id` FROM `users` WHERE `username` = '$invite'");