আমি কীভাবে সর্বশেষ sertedোকানো রেকর্ড আইডি পাব?


9

আমি একটি ডাটাবেস টেবিলের মধ্যে সর্বশেষ rowোকানো সারির রেকর্ড আইডি পেতে চাই। আমি ব্যবহার করার চেষ্টা করছি db_last_insert_id(), তবে এটি একটি ব্যতিক্রম ছুঁড়ে দিচ্ছে ।

অনির্ধারিত ফাংশন কল করুন db_last_insert_id()

আমি কীভাবে সর্বশেষ sertedোকানো রেকর্ড আইডি পাব?


1
এই ফাংশনটি ডি 7-তে উপলব্ধ নয়। drupal.org/node/729970
— GoodSp33d

উত্তর:


15

ড্রুপাল 6 এ আপনি নীচের মতো কোড ব্যবহার করবেন।

db_query("INSERT INTO {mytable} (intvar, stringvar, floatvar) VALUES (%d, '%s', %f)", 5, 'hello world', 3.14);
$id = db_last_insert_id('mytable', 'id_fieldname');

ড্রুপাল 7 সমতুল্য কোডটি নীচে রয়েছে।

$id = db_insert('mytable')
  ->fields(array(
    'intvar' => 5,
    'stringvar' => 'hello world',
    'floatvar' => 3.14,
  ))
  ->execute();

আমি সদ্য বিধি db.Actually আমি প্রয়োজন নতুন নিবন্ধিত আইডি (ইউআইডি) থেকে একটি নির্দিষ্ট টেবিল থেকে রেকর্ড আইডি সন্নিবেশিত চান আমি এটা কিভাবে acheive করতে
— prashanth

এতে টেবিলের নাম এবং মাঠের নাম উল্লেখ করতে ভুলবেন নাfunction db_last_insert_id($table, $field)
— ভ্লাদিস্লাভ

10

আপনি যদি নির্দিষ্ট inোকানো ক্যোয়ারীটি নিজেই নিয়ন্ত্রণ না করেন তবে আপনি সর্বদা একটি সাধারণ পুরানো এসকিউএল কোয়েরি ব্যবহার করতে পারেন:

$last_id = db_query('SELECT MAX(id_col) FROM {table}')->fetchField();

আমি ম্যাক্স (ইউআইডি) ব্যবহার করার চেষ্টা করেছি, তবে আমি শেষ রেকর্ডের উপরে রেকর্ডটি পাচ্ছি
— প্রশান্ত

তারপরে রেকর্ডটি এখনও inোকানো হয়নি, সুতরাং নতুন কোনও ইউআইডি উপলব্ধ নেই
— ক্লাইভ

আমি ডাটাবেসে নতুন রেকর্ডটি দেখতে পাচ্ছি কিন্তু আমি সেই রেকর্ডটির আইডি পাচ্ছি না
— প্রশান্ত

নাহ, এটি অসম্ভব :) আপনি যদি ডাটাবেসে uid দেখতে পান তবে যৌক্তিকভাবে নির্বাচনের জন্য MAX(uid) অবশ্যই সেই ইউআইডি ফিরে আসতে হবে । যদি না হয় আপনার মাইএসকিউএল সার্ভারটি খুব ভাঙা হয়েছে
— ক্লাইভ

এটি কেবলমাত্র সম্ভব হবে যদি আপনার রক্ষণটি শেষ রেকর্ড justোকানোর ঠিক আগে ডাকা হয়।
— Елин Й.

0
  $id = db_insert('mytable')
       ->fields(array(
       'intvar' => 5,
       'stringvar' => 'hello world',
       'floatvar' => 3.14,
       ))
       ->execute();

$ আইডিতে টেবিলের সর্বশেষ sertedোকানো আইডি থাকে। শুধু ইকো-আইডি করুন।


0

যদি কোনও কারণের আগে আপনাকে ক্ষেত্রের মান সন্নিবেশ করার আগে এটির প্রয়োজন হয় এটি এটি করা প্রায় কাজ।

function _get_id($tableName, $fieldName) {

    $select = db_select($tableName, 'o');
    $fields = array(
        $fieldName,
    );
    $select->fields('o', $fields);
    $result = $select->orderBy($fieldName)->range(0,1)->execute()->fetchAll();
    return $result[0];
}

$lastId = _get_id('table_name' , 'uid');

0

একটি অশোধিত কৌশল, কিন্তু এটি কার্যকর:

$myInsertID = db_query("INSERT INTO {fred} (fld1,fld2) VALUES ('a','b')", array(), array('return' => Database::RETURN_INSERT_ID));

অথবা

$myInsertID = db_query("INSERT INTO {fred} (fld1,fld2) VALUES ('%s','%s')", array('a','b'), array('return' => Database::RETURN_INSERT_ID));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.