0

MySQLデータベースがあり、httpRequestを使用してAndroidアプリケーションに接続しています。httpPostを介して値を挿入するphpファイルと、各行を一意に保つための自動インクリメントIDを持つために挿入するテーブルがあります。

私がやりたいのは、phpを介して値を挿入し、挿入された行のIDを取得して、別の挿入クエリに使用できるようにすることです。PHPを介してこれを行う方法はありますか?

これが私の現在のコードです:

<?php

/*
 * Following code will insert an order request
 */

// array for JSON response
$response = array();

// check for required fields
if (isset($_POST['table_ID']) && isset($_POST['MenuBook']) && isset($_POST['order_status'])&& isset($_POST['order_date'])&& isset($_POST['order_receipt'])) {

    $tableID = $_POST['table_ID'];
    $menuBook = $_POST['MenuBook'];
    $order_status = $_POST['order_status'];
    $order_date = $_POST['order_date'];
    $order_receipt = $_POST['order_receipt'];

    // inlude db connect class
    require_once __DIR__ . '/DBConnect.php';

    // connecting to db
    $db = new DB_CONNECT();

    // mysql inserting a new row
    $result = mysql_query("INSERT INTO orderdb(table_ID,MenuBook,order_status,order_date,order_receipt) VALUES('$table_ID', '$menuBook', '$order_status','$order_date','$order_receipt')");

    // check if row inserted or not
    if ($result) {
        // successfully inserted into database
        $response["success"] = 1;
        $response["message"] = "Order successfully created.";

        // echoing JSON response
        echo json_encode($response);
    } else {
        // failed to insert row
        $response["success"] = 0;
        $response["message"] = "Oops! An error occurred.";

        // echoing JSON response
        echo json_encode($response);
    }
} else {
    // required field is missing
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    // echoing JSON response
    echo json_encode($response);
}
?>
4

5 に答える 5

2

挿入クエリの後、mysql-insert-idを使用します。

<?php 
...
$result = mysql_query("INSERT INTO orderdb(table_ID,MenuBook,order_status,order_date,order_receipt) VALUES('$table_ID', '$menuBook', '$order_status','$order_date','$order_receipt')");
$last_ID = mysql_insert_id();
...
?>

mysql_insert_id()のドキュメントから:

成功時に前のクエリによってAUTO_INCREMENT列に対して生成されたID。前のクエリがAUTO_INCREMENT値を生成しない場合は0、MySQL接続が確立されていない場合はFALSE。

于 2013-02-20T21:57:53.020 に答える
2

自動インクリメント列で前のクエリのIDを返す呼び出し可能な関数があります。通常、IDを挿入または更新して必要になるたびに、これを呼び出します。

MySQL:$ id = mysql_insert_id(); //最後の挿入のIDを返します

http://php.net/manual/en/function.mysql-insert-id.php

MySQLi:$ id = $ mysqli-> insert_id

http://www.php.net/manual/en/mysqli.insert-id.php

于 2013-02-20T22:07:20.303 に答える
1

クエリの後、 http://php.net/manual/en/function.mysql-insert-id.phpを使用できますmysql_insert_id()

ただし、使用しているmysqlドライバーは減価償却されているため、mysqliまたはpdoを使用する必要があります。

于 2013-02-20T21:58:21.893 に答える
1

以下に示すように使用mysql_insert_idしてください。ただし、実際にはmysqliまたはPDOに変換する必要があります。どちらも同様の機能を備えています。

// mysql inserting a new row
$result = mysql_query("INSERT INTO orderdb(table_ID,MenuBook,order_status,order_date,order_receipt) VALUES('$table_ID', '$menuBook', '$order_status','$order_date','$order_receipt')");

// check if row inserted or not
if ($result) {
    $insert_id = mysql_insert_id($db);

    // successfully inserted into database
    $response["success"] = 1;
    $response["message"] = "Order successfully created.";

    // echoing JSON response
    echo json_encode($response);
} else {
于 2013-02-20T22:00:38.740 に答える
1
used_id = mysql_insert_id($db);

mysqliモジュールへの移行を検討してください。mysql_queryは危険であり、SQLインジェクションへの扉を開きます。

于 2013-02-20T22:00:41.947 に答える