0

我想知道是否可以让某人查看我的陈述,看看我可能在哪里搞砸了。我已经通过回显它测试了正在发布的信息,并且一切似乎都在正确地进行,但我无法让它物理地创建适当的记录。我也没有收到任何错误,它会像表单发布的那样返回到标题位置。

//First we make sure there are enough licenses left to add the user
$limit = "select * from organization_seats WHERE orgid=$orgid";
$orglimit = mysql_query($limit);
$licenses = $orglimit['limit'];

$count = "select count(*) from organization_users WHERE organizationid=$orgid";

if ((!$licenses < $count)) {

     echo 'You have reached the number of maximum licenses for your Organization.';

 } else {

//If we have licenses left, proceed to add new user
//Populate the user table
$sql = "insert into user (firstname, lastname, title, address1, address2, country, city, state, zip, phone, mobile, birthday, username, email, password) values ('$fname','$lname','$title','$address1','$address2','$country', '$city', '$state', '$zip', '$phone', '$mobile', '$bday', '$username', '$email', '$password')";

$exec = mysql_query($sql);

//Add the user to the organization
$userid = mysql_insert_id(); //call the last ID entered into the user table first

$sql2 = "insert into organization_users(organizationid, userid, active) values ('$orgid', '$userid', $)";
$exec = mysql_query($sql2); 

//recall the userid
$sql3 = "select * from user where username = $username";
$exec = mysql_query($sql3);
$newuserid = $newuserselect['id'];  

 //Add the user to the department
$sql4 = "insert into organization_dep_users(orgid, depid, userid) values ('$orgid', '$department', '$newuserid')";
$exec = mysql_query($sql4);

if ($exec === TRUE) {

    header( 'Location: index.php' ) ;

} else {
    echo mysql_error();
 }
}

顺便说一句,我的所有变量都附加了 mysql_real_escape_string。

4

2 回答 2

0

1)$sql2有一个错误 - 您正在传递$而不是实际变量。

2)从不存在的资源$sql3分配之后。$newuserid我假设你$newuserselect = mysql_fetch_assoc($exec);在它之前失踪了。

3)您确实需要对查询添加错误检查。如果第一个查询失败,则第二个查询将以错误的 id 运行$userid,或者FALSE如果先前的查询没有创建 id。其他问题也可能在您的代码中出现,而无需进行错误检查。

4) 如上所述,建议过渡到 pdo 或 mysqli。

5)刚刚注意到-您的第一个选择查询也试图滥用资源-您应该这样做

$orglimit = mysql_query($limit);
$orgrow = mysql_fetch_assoc($orglimit);
$licenses = $orgrow['limit'];

6)并且....您$count将无法正常工作,您将查询字符串分配给$count但从未实际执行查询以获取号码。所以当你这样做时,if ((!$licenses < $count))你实际上是在比较一个数字和一个字符串,而不是一个数字和一个数字。

于 2013-04-11T04:12:38.977 回答
0

不确定您到底面临什么问题..但是如果您正确复制了代码,那么我发现了一个错误的陈述

insert into organization_users(organizationid, userid, active) values ('$orgid', '$userid', $)

什么是$……?

第二..

 $limit = "select * from organization_seats WHERE orgid=$orgid";
 $orglimit = mysql_query($limit);
 $licenses = $orglimit['limit'];

应该

$limit = "select * from organization_seats WHERE orgid=$orgid";
$resource = mysql_query($limit);
$orglimit  = mysql_fetch_assoc($resource);
$licenses = $orglimit['limit'];

mysql_query 总是返回一个资源而不是数组..

与 $sql3 相同

尝试改变这些,你应该没问题

建议:请开始使用 mysqli_* 或 PDO

于 2013-04-11T04:14:00.590 回答