mysqli_insert_idを使用して最後のauto_increment_IDを取得する機能をテストしています。 2つの異なる方法を使用するかどうかを調べると、私はかなり混乱していると感じます。結果は異なります。mysqli_insert_idがPHPのOOPメソッドで動作していません
方法1
<?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 item(uid,item_id,item_name,item_price,item_quantity)
VALUES('1','0','hhh','23','23');";
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);
?>
私は最後のIDを取得することができますので、この手続きの方法が機能しています。
方法2
をdb.phpこのメソッドは、単純に動作しません
require "db.php";
$db=new db('localhost','bs','root','');
$sql = "INSERT into item(uid,item_id,item_name,item_price,item_quantity)
VALUES('1','0','hhh','23','23');";
if (mysqli_query($db->conn(), $sql)) {
$last_id = mysqli_insert_id($db->conn());
echo "New record created successfully. Last inserted ID is: " . $last_id;
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($db->conn());
}
mysqli_close($db->conn());
class db{
protected $db_host;
protected $db_name;
protected $db_user_name;
protected $db_pass;
public function __construct($host,$db_n,$user_n,$pass) {
$this->db_host=$host;
$this->db_name=$db_n;
$this->db_user_name=$user_n;
$this->db_pass=$pass;
}
public function conn(){
return mysqli_connect($this->db_host, $this->db_user_name, $this->db_pass, $this->db_name);
}
}
test.phpを...それは結果0を取得します。誰が私が間違っていたのか知っていますか? variable.asにあなたは$ DB-> CONN(と呼ばれるという理由だけで
を私は2回初期化する?私はPHPには新しく、なぜ部分が間違っているのか知りたいのです。 – gosulove
@gosuloveあなたは '$ db-> conn()'を何回も使ったことがあります。上記のコードを3回見て、dbクラスを初期化した後で '$ db-> conn()'を一度割り当ててから、 – Ghost