php - MySQL(不是 mysqli)插入最后一个 ID 不起作用

标签 php mysql database forms

我知道那里有很多类似的问题,但我已经搜索了很多次以确保不会浪费任何人的时间,但我一直无法找到解决方案。我希望有人能够发现我遗漏的东西。

我们的网站目前正在使用 MySQL(不是 MySQLi...我知道它应该更新,但至少现在,这是我必须使用的)。

我正在通过已创建的表单更新两个数据库表。第一个表,称为“客户”,有一些个人资料信息,包括一个 auto_incremented 客户 ID,并由我的表单中的一些信息更新。在第二个表“customer_addresses”中,其余信息被更新,新表中的列之一称为 customer 并且已在数据库中建立索引以链接到“customers”表中的 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() 是一个 PHP 函数,不是 MySQL 函数,并且函数调用不会在字符串内部展开。MySQL 函数称为 LAST_INSERT_ID(),所以应该是:

$query="INSERT INTO customer_addresses (customer,address,address2,city,state,zipcode)
    VALUES(LAST_INSERT_ID(),'$address','$address2','$city','$state','$zipcode')";

或者您可以调用 PHP 函数并将结果插入到字符串中。

$customer_id = mysql_insert_id();
$query="INSERT INTO customer_addresses (customer,address,address2,city,state,zipcode)
    VALUES($customer_id,'$address','$address2','$city','$state','$zipcode')";

关于php - MySQL(不是 mysqli)插入最后一个 ID 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37798273/

相关文章:

php - 您是否在Azure中启用了php_fileinfo扩展

javascript - 如何从<form action>打印?

php - 使用 PHP/MySQL 显示一些统计信息的最有效方法

javascript - 如果两个或多个请求同时出现会发生什么?

Php 类型/css 文件无法正常工作

php - Curl with Post 不工作 Php?

mysql - 查找与按字段排序的先前记录的差异

android - 需要有关从数据库获取数据的帮助

mysql - 使用 Knex 和 MySQL 执行多条语句(变量和迁移)

php - 如果数据存在,防止将数据插入数据库