【发布时间】:2016-06-13 20:07:30
【问题描述】:
我知道那里有很多类似的问题,但我已经搜索了很多次以确保不会浪费任何人的时间,但我一直无法找到解决方案。我希望有人能够发现我遗漏的东西。
我们的网站目前正在使用 MySQL(不是 MySQLi...我知道它应该更新,但至少现在,这是我必须使用的)。
我正在通过已创建的表单更新两个数据库表。第一个表,称为“客户”,有一些个人资料信息,包括一个自动递增的客户 ID,并由我的表单中的一些信息更新。在第二个表“customer_addresses”中,其余信息被更新,新表中的一列称为客户,并已在数据库中建立索引以与“客户”表中的 id 列链接。当我提交此表单时,我希望使用新客户更新“customers_addresses”表,但提交时未显示。这是我的代码......(有问题的部分是底部附近的 mysql_insert_id())......
<?php
if($_POST) {
//Get variables from post array
$first_name = mysql_real_escape_string($_POST['first_name']);
$last_name = mysql_real_escape_string($_POST['last_name']);
$email = mysql_real_escape_string($_POST['email']);
$password = mysql_real_escape_string(md5($_POST['password']));
$address = mysql_real_escape_string($_POST['address']);
$address2 = mysql_real_escape_string($_POST['address2']);
$city = mysql_real_escape_string($_POST['city']);
$state = mysql_real_escape_string($_POST['state']);
$zipcode = mysql_real_escape_string($_POST['zipcode']);
//Create customer query
$query="INSERT INTO customers (first_name,last_name,email,password)
VALUES('$first_name','$last_name','$email','$password')";
//Run query
mysql_query($query);
//Create address query
$query="INSERT INTO customer_addresses (customer,address,address2,city,state,zipcode)
VALUES(mysql_insert_id(),'$address','$address2','$city','$state','$zipcode')";
//Run query
mysql_query($query);
header('Location: index.php');
exit;
}
?>
我知道我已正确连接到数据库,因为每次提交表单时都会正确更新“客户”表,并且我知道“客户地址”表已正确连接,因为如果我在 PHP 中手动更改“mysql_insert_id” ()",成为正确的客户 ID(比如 35),然后它可以正常工作,但不知何故,我需要它从第一个查询到客户表中获取此信息。
感谢您的帮助。
编辑
我也尝试使用“LAST_INSERT_ID()”,但也无济于事。
【问题讨论】:
-
尝试从字符串中取出
mysql_insert_id。在第一个 mysql_query 之后,分配它,所以$customerId = mysql_insert_id();,然后将其转储出来,看看它是否被正确填充。 -
你不能只在字符串中间有一个函数
mysql_insert_id()并期望它把它的输出放在那里......它不是那样工作的。将其移到字符串之外并为其分配一个变量。 -
我知道使用 $mysqli->insert_id,您可以按照我的方式放置代码,这就是我尝试这样做的原因。但在我写这篇文章时,我可以看到它可能与创建变量的“$”符号有关......
-
$password = mysql_real_escape_string(md5($_POST['password']));是多余的。一个简单的$password = md5($_POST['password']);就足够了。 -
回显你的 $query 看看会发生什么。