これはそれほど複雑ではないことは知っていますが、方法を思い出せません。
次の自動インクリメントを知る必要があるだけです。
$result = mysql_query("
SHOW TABLE STATUS LIKE Media
");
$data = mysql_fetch_assoc($result);
$next_increment = $data['Auto_increment'];
...しかし、私は私のために働きません。何が間違っていますか?
これはそれほど複雑ではないことは知っていますが、方法を思い出せません。
次の自動インクリメントを知る必要があるだけです。
$result = mysql_query("
SHOW TABLE STATUS LIKE Media
");
$data = mysql_fetch_assoc($result);
$next_increment = $data['Auto_increment'];
...しかし、私は私のために働きません。何が間違っていますか?
$result = mysql_query("
SHOW TABLE STATUS LIKE 'Media'
");
$data = mysql_fetch_assoc($result);
$next_increment = $data['Auto_increment'];
テーブルの名前は、次のように一重引用符で囲む必要がありました。'table_name'
そのため、現在は問題なく動作しています。
:)
クエリは次のようになります。
SHOW TABLE STATUS WHERE `Name` = 'Media';
別の方法ですが、遅いですが、次のとおりです。
SELECT AUTO_INCREMENT FROM information_schema.`TABLES` T where TABLE_SCHEMA = 'myScheme' and TABLE_NAME = 'Media';
information_schema は、多くのスキームからデータを取得するのに最も役立ちます。
こんな機能も使えます
function getNextValue(){
$query = "SHOW TABLE STATUS LIKE 'vendors'";
dbconnect();
$results=mysql_query($query);
if(mysql_errno() != 0) {
$result['count'] = -1;
$result['error'] = "Error: ".mysql_error();
} else {
$result['count'] = mysql_num_rows($results);
for($counter=0;$counter<$result['count'];$counter++) {
$result[$counter] = mysql_fetch_assoc($results);
}
}
return $result[0]['Auto_increment'];
mysql_close();
}
次のauto_incrementを知る必要がある場合は、間違っている可能性が 99% あります。次の auto_increment を取得する代わりに、実行しようとしている挿入を実行してSELECT LAST_INSERT_ID()
から、その挿入から auto_increment 値を取得するために使用する必要があります。
次の auto_increment 値を推測しようとして、複数のユーザーが同時にそれを行っている場合、間違った値を取得することがよくあります。