从一个表单(mysql和PHP)插入到多个表中


Insert into multiple tables from one form (mysql and PHP)

我是这个网站和编码的新手,所以如果你遇到一些新手错误,请对我宽容一点。

我有一个表单,当提交时,它会将数据插入两个独立的表(users,users_ddresss)中。用户地址应通过用户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();
 }

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

第一个

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

应该被取代

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

第二个

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

应该被取代

return $user_id

您的代码有一些错误/奇怪的地方:

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

修复可能是通过用$userid = $this->db->getInsertId()替换第一个return $this->db->getInsertId()和用return $userid替换第二个来完成的。

祝你好运,欢迎来到SO.