我是PHP的初学者。我有这个功能。
function create_group($name, $description, $invites){
global $link;
$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'");
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{
print '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;
}}}
$invitesarr = explode(',', $invites);
foreach($invites as $invite){
$idres = mysqli_query($link, "SELECT `user_id` FROM `users` WHERE `username` = '$invite'");
if(mysqli_num_rows($idres) == 0){
exit("1 or more of the users that you entered do(es) not exist!");
}else{
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)");
}}}}
$ link是现有的数据库连接。我从这个页面得到了参数的变量:
<?php
include "function_inc.php";
if(isset($_POST['name'], $_POST['description'], $_POST['invites'])){
create_group($_POST['group_name'], $_POST['description'], $_POST['invites']);
}
?>
<html>
<body>
<form action="new_group.php" method="post">
<div>
<label for="group_name">Group Name: </label>
<input type="text" name="group_name" id="group_name" />
</div>
<div>
<label for="invites">Invite...</label>
<input type="text" name="invites" id="invites" />
</div>
<div>
<label for="description">Description: </label>
<textarea name="description" id="description"></textarea>
</div>
<div>
<input type="submit" value="Create" />
</div>
</form>
</body>
</html>
我不明白为什么然后我会收到以下消息:
Notice: Undefined variable: invites in /home/peter/Documents/Logarithm/function_inc.php on line 49
Notice: Undefined variable: invites in /home/peter/Documents/Logarithm/function_inc.php on line 50
请帮帮我;我已经看了几个小时了!
提前致谢。
编辑:谢谢你,本杰明这样!我现在已经解决了变量消息,但是我遇到了一个新问题:警告:为foreach()提供的参数无效。任何帮助将不胜感激。答案 0 :(得分:2)
$ invites变量仅在函数内可用。看起来您的代码中可能有1个额外的内容
$group_id = $resu;
}}}
这意味着你的功能声明已经完成。
尝试正确缩进代码,以便轻松查看所有括号的位置。
我个人会避免使用global
变量,我会将这些变量作为依赖项传递给函数。
另外,考虑使用PDO而不是mysqli_ *函数,因为这些是一个古老的学校。
以下代码不是
$invitesarr = explode(',', $invites);
foreach($invites as $invite){
$ invites看起来像是一个字符串,你试图遍历字符串而不是通过$ invitesarr
答案 1 :(得分:2)
我最好建议您逐个开始回显每个语句并立即退出并退出,以便您可以观察到您确实拥有哪些值以及哪些值不存在。这是最好的调试方法。 例如:
function create_group($name, $description, $invites) {
echo $name;
exit;
.
.
.
}
答案 2 :(得分:1)
我重新整理了上面的代码:
function create_group($name, $description, $invites) {
global $link;
$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'");
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 {
print '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;
}
}
}
$invitesarr = explode(',', $invites);
foreach($invites as $invite) {
$idres = mysqli_query($link, "SELECT `user_id` FROM `users` WHERE `username` = '$invite'");
if(mysqli_num_rows($idres) == 0) {
exit("1 or more of the users that you entered do(es) not exist!");
} else {
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)");
}
}
}
}
问题是函数定义后的foreach($invites as $invite)
。您希望遍历$invites
,但此变量在上下文中不存在。 $invites
仅作为函数的参数存在。至少从我们发布给您的代码中可以看出。
修改:抱歉,在foreach
$invitesarr = explode(',', $invites);
之前的某一行发生了错误