Сделать следующий автоинкремент

Я знаю, что это не так сложно, но я не могу вспомнить как это сделать.

Мне просто нужно знать следующее автоматическое приращение.

$result = mysql_query("
    SHOW TABLE STATUS LIKE Media
");
$data = mysql_fetch_assoc($result);
$next_increment = $data['Auto_increment'];

...но я не буду работать на себя, что я делаю не так?

5 ответов


$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, и у вас есть несколько пользователей, делающих это одновременно, вы часто получите неправильное значение.