簡體   English   中英

檢索自動增量值:

[英]Retrieving auto increment value:

我有一個表“ prac1”,其中包含列id ( primary key, auto_increment)NameContact 還有另一個表“ prac2”,具有列id(foreign key)Order_id(primary key)Order_items

<?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();
    }

希望這個對你有幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM