我有一个表'prac1',其中有列id ( primary key, auto_increment)NameContact。还有另一个具有列id(foreign key)Order_id(primary key)Order_items的表'prac2'。

<?php

$ok=isset($_POST['ok']);
if($ok)
{

    $name=$_POST['cname'];
    $order=$_POST['oi'];
    $contact=$_POST['contact'];

    $db = new mysqli("localhost", "root", "","learndb");
    $stmt=$db->prepare("INSERT INTO prac1 (Name,Contact) values (?,?)");
    $stmt->bind_param("si",$name,$contact);
    $stmt->execute();

    $stmt=$db->prepare("INSERT INTO prac2 (Order_items) values(?) ");
    $stmt->bind_param("i",$order);
    $stmt->execute();


}

?>

<form action="prac.php" method="POST">
Name:<input type="text" name="cname"><br>
Contact:<input type="text" name="contact"><br>
Order Items:<input type="text" name="oi"><br>
<input type="submit" name="ok"><br>


现在,从此表单提交中,名称和订单项将在表prac1中插入具有自动递增ID的表中。我如何检索表prac1的ID以插入prac2。
而且我想由于prac2表中的NULL id而导致两个表没有连接,并且以下代码不显示任何内容。

$db = new mysqli("localhost", "root", "","learndb");
$stmt=$db->prepare("SELECT * FROM prac1 INNER JOIN prac2 ON prac1.id=prac2.id ORDER BY prac2.Order_items");
$stmt->execute();
$result=$stmt->get_result();

echo "<TABLE BORDER='1'>";
echo "<tr><thead><td>ID</td><td>Order ID</td><td>Order items</td><td>Name</td><td>Contact</td><td>Status</td></thead></tr>";
while($row=$result->fetch_assoc())
{
    echo "<tr>";
    echo "<td>";
    echo $row['id'];
    echo "</td><td>";
    echo $row['order_id'];
    echo "</td><td>";
    echo $row['Order_items'];
    echo "</td><td>";
    echo $row['Name'];
    echo "</td><td>";
    echo $row['Contact'];
    echo "</td><td>";
    echo $row['Status'];
    echo "</td>";
    echo "</tr>";
}
    echo "</table>";

最佳答案

干得好:

<?php
    if( isset($_POST['ok']) ) {
        $name     = $_POST['cname'];
        $order    = $_POST['oi'];
        $contact  = $_POST['contact'];

        $db       = new mysqli("localhost", "root", "","learndb");
        $stmt=$db->prepare("INSERT INTO prac1 (Name, Contact) values (?,?)");
        $stmt->bind_param("si",$name,$contact);
        $stmt->execute();

        //HERE YOU GET THE INSERT ID
        $insertID = $db->insert_id; //THIS IS THE ID THAT YOU NEED ...

        // OR IF YOU ARE INTO PROCEDURAL STYLE:
        // $conn = mysqli_connect("localhost", "my_user", "my_password", "world");
        // YOU CAN DO THIS:
        // $insertID = mysqli_insert_id($conn)

        //THE REST OF YOUR CODE
        $stmt=$db->prepare("INSERT INTO prac2 (Order_items) values(?) ");
        $stmt->bind_param("i", $insertID);
        $stmt->execute();
    }


希望这个对你有帮助...

关于php - 检索自动增量值:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36981916/

10-11 03:23
查看更多