从一个表单(mysql和PHP)插入多个表
我是这个网站的新手,所以如果你遇到一些新手的错误,请对我宽容一些 我有一个表单,它在提交时将数据插入两个单独的表(用户、用户和地址)。用户地址应通过用户ID链接回用户 我已经看到了几种不同的方法可以用来解决这类问题(没有哪种方法可以奏效),但我正在寻求帮助,看看哪种方法是最好的 这就是我到目前为止所做的:从一个表单(mysql和PHP)插入多个表,php,mysql,insert,transactions,Php,Mysql,Insert,Transactions,我是这个网站的新手,所以如果你遇到一些新手的错误,请对我宽容一些 我有一个表单,它在提交时将数据插入两个单独的表(用户、用户和地址)。用户地址应通过用户ID链接回用户 我已经看到了几种不同的方法可以用来解决这类问题(没有哪种方法可以奏效),但我正在寻求帮助,看看哪种方法是最好的 这就是我到目前为止所做的: public function createNewUser($details, $active) { $password = $details["password"]; $
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();
}
您的代码有很多错误/奇怪之处:
strtolower
和LOWER
。不需要做两次。这就是“无法访问的代码”
return$this->db->getInsertId()
替换为$userid=$this->db->getInsertId()
,第二个替换为return$userid
祝您好运,欢迎使用SO。第二个查询永远不会执行,因为在所有条件下都会执行返回语句。即使纠正了这一点,第二个查询中的$user_id也并没有用从第一个查询中获得的值填充。解决方案如下: 首先 应该由
$user_id=$this->db->getInsertId();
return $user_id
第二
应该由
$user_id=$this->db->getInsertId();
return $user_id
你很想用小写字母表示值。首先在PHP中使用
strtolower
,然后在MySQL查询中使用LOWER()
。奇怪。尽可能低lol:D