0

我是这个网站和编码的新手,所以如果你遇到一些新手错误,请放轻松。

我有一个表单,在提交时会将数据插入两个单独的表(用户、用户地址)中。用户地址应通过用户 ID 链接回用户。

我已经看到了几种不同的方法可以用来解决这类问题(没有哪个 IC 可以工作),但我正在寻求帮助,看看哪种方法是最好的。

这是我到目前为止所拥有的:

public function createNewUser($details, $active) 
{
    $password  = $details["password"];
    $username  = strtolower($details["username" ]);
    $firstname = strtolower($details["firstname"]);
    $lastname  = strtolower($details["lastname" ]);
    $email     = strtolower($details["email"    ]);
    $sex       = strtolower($details["sex"      ]);
    $datepicker  = strtolower($details["datepicker" ]);
    $disabled  = ($active) ? "0" : "1";
    $address1     = strtolower($details["address1"    ]);
    $address2     = strtolower($details["address2"    ]);
    $province     = strtolower($details["province"    ]);
    $city     = strtolower($details["city"    ]);
    $district     = strtolower($details["district"    ]);
    $zipcode     = strtolower($details["zipcode"    ]);


    $

    $sql       = "INSERT INTO users VALUES (NULL, LOWER('$username'), MD5('$password'), LOWER('$firstname'), LOWER('$lastname'), LOWER('$email'), LOWER('$sex'), LOWER('$datepicker'), 0, NOW(), $disabled, 0)";

    $resultSet = $this->db->query($sql);
    return $this->db->getInsertId();

    $sql      = "INSERT INTO users_addresses VALUES (NULL, LOWER('$userid'), LOWER('$address1'), LOWER('$address2'), LOWER('$province'), LOWER('$city'), LOWER('$district), LOWER('$zipcode')";
    $resultSet = $this->db->query($sql);
    return $this->db->getInsertId();
 }
4

2 回答 2

0

您的代码有很多错误/奇怪的地方:

  1. 不要将变量直接放在 SQL 代码中,而是使用准备好的语句
  2. 您正在调用strtolower所有LOWER数据。不需要做两次。
  3. 第二个查询永远不会完成,因为你return在它之前。那是“无法访问的代码”。

修复可能是通过将第一个替换为return $this->db->getInsertId()$userid = $this->db->getInsertId()将第二个替换为return $userid.

祝你好运,欢迎来到 SO。

于 2013-08-23T10:42:26.710 回答
0

第二个查询永远不会执行,因为在所有条件下执行之前都有一个 return 语句。即使更正了,第二个查询中的 $user_id 也没有填充从第一个查询中获得的值。解决方案如下:

第一的

return $this->db->getInsertId();

应该替换为

$user_id=$this->db->getInsertId();

第二

return $this->db->getInsertId();

应该替换为

return $user_id
于 2013-08-23T11:39:17.787 回答