2016-06-15 8 views
3

私はこの質問が何度も答えられていることを知っています。私はここからいくつかのソリューションを試しましたが、何も機能しませんでした。私はPHPフレームワークを使用していません。php-get last insert id

私は挿入操作が行われており、挿入された行のIDを取得したいと思います。

$qry="INSERT INTO tablename(content) VALUES('".$content."')"; 
setData($qry); 

のsetData()操作を挿入し、ユーザー定義関数は次のとおりです。

は、ここに私のコードです。

//for data submit 
function setData($qry) 
{ 
    $obj=new DBCon(); 
    $res=$obj->submitQuery($qry); 
    return $res; 
} 

//fetches result 
function getData($qry) 
{ 
    $obj=new DBCon(); 
    $res=$obj->selectQuery($qry); 
    return $res; 
} 

これは私がデータベース接続を確立するために作られたクラスです。

class DBCon 
    { 
     private function getConnection() 
     { 
           // hostname, username,  password, database 
      $con=mysqli_connect("localhost","root","","dbname")OR die('Could not Connect the Database');   
      return $con; 
     } 

     public function closeCon() 
     { 
      mysqli_close($con); 
     } 

     public function submitQuery($qry) 
     { 
      $result=0; 
      $con=$this->getConnection(); 
      $result=mysqli_query($con,$qry); 
      return $result; 
     } 

     public function selectQuery($qry) 
     { 
      $con=$this->getConnection(); 
      $res=mysqli_query($con,$qry); 
      return $res; 
     } 
    } 

最後に挿入IDを取得するには、私は次のクエリを書いたが、それはどんな結果が得られませんでした:

SELECT LAST_INSERT_ID() FROM tablename 

他の方法がありますか?

+1

(この$番号= LAST_INSERT_IDを試してください)。あなたの挿入クエリの後 –

+1

多分興味深い? http://php.net/manual/en/mysqli.insert-id.phpつまり、 '$ lastId = mysqli_insert_id($ connection);' –

+2

本当にあなたの試行を共有していないので、間違っているか、なぜ '' SELECT LAST_INSERT_ID()FROM tablename'を手動で実行しなければならないと思ったのですか?私たちは推測することができ、私はあなたが挿入直後と同じ接続でIDを取得しないと推測します。 –

答えて

2

LAST_INSERT_ID()は、AUTO_INCREMENTカラムのMySQLサーバによって自動生成された値のみを返します。あなたが特定の値を挿入すると、何の自動生成は行われず、何の価値がLAST_INSERT_ID().

てみによって返されません。$con->insert_id;

+1

これは結果をもたらさない@Mohammad Fareed – Annabelle

+1

あなたのテーブルはauto_incrementプライマリキーを持つid関連カラムを持っていますか? –

+1

@Amelia Earheartこれ以上の結果はありますか? –

1

は、この方法を試してみてください。

$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "INSERT INTO MyGuests (firstname, lastname, email) 
VALUES ('First Name', 'Last Name', '[email protected]')"; 

if ($conn->query($sql) === TRUE) { 
    $last_id = $conn->insert_id; 
    echo "New record created successfully. Last inserted ID is: " . $last_id; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 
+0

あいまいな質問の問題は、(OPが意図的に試した、好きではなかった)使用例が問題を解決するかどうかを判断する方法がないことです。 –

1

オブジェクト指向mysqliの

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "INSERT INTO MyGuests (firstname, lastname, email) 
VALUES ('John', 'Doe', '[email protected]')"; 

if ($conn->query($sql) === TRUE) { 
    $last_id = $conn->insert_id; 
    echo "New record created successfully. Last inserted ID is: " . $last_id; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
?> 

MySQLiを手続き

 <?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

$sql = "INSERT INTO MyGuests (firstname, lastname, email) 
VALUES ('John', 'Doe', '[email protected]')"; 

if (mysqli_query($conn, $sql)) { 
    $last_id = mysqli_insert_id($conn); 
    echo "New record created successfully. Last inserted ID is: " . $last_id; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 

mysqli_close($conn); 
?> 

PDO

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDBPDO"; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql = "INSERT INTO MyGuests (firstname, lastname, email) 
    VALUES ('John', 'Doe', '[email protected]')"; 
    // use exec() because no results are returned 
    $conn->exec($sql); 
    $last_id = $conn->lastInsertId(); 
    echo "New record created successfully. Last inserted ID is: " . $last_id; 
    } 
catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 
?> 
0
$last_id = $conn->insert_id; 
+0

あなたのコードが何をしているのかを説明する必要があります。コードのみの回答は、一般にSO –