Sonraki otomatik artışı alın

5 Cevap php

Ben bu kadar karmaşık değil biliyorum ama nasıl hatırlamıyorum.

Ben sadece sonraki otomatik artış bilmek gerekir.

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

... Ama ben yanlış yapıyorum, benim için çalışmaz?

5 Cevap

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

Tablonun adı bu gibi tek tırnak ile sarılmış gerekiyordu: 'table_name'

Yani şimdi gayet güzel çalışıyor.

:)

Sorgu bu gibi görünmelidir:

SHOW TABLE STATUS WHERE `Name` = 'Media';

Başka bir yol, ama yavaş olduğunu:

SELECT AUTO_INCREMENT FROM information_schema.`TABLES` T where TABLE_SCHEMA = 'myScheme' and TABLE_NAME = 'Media';

Information_schema birçok düzenleri veri alma çoğunlukla yararlıdır.

Siz de bu fonksiyonu kullanabilirsiniz

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();
}

Eğer next AUTO_INCREMENT bilmek gerekiyorsa, o zaman yanlış yapıyorsun% 99 olasılıkla. yerine bir sonraki AUTO_INCREMENT almak, sadece ne yapmak üzereyiz insert, daha sonra SELECT LAST_INSERT_ID() o ovülden auto_increment değerini almak için kullanırım gerekir.

Eğer bir sonraki auto_increment değerini tahmin etmeye çalışın ve aynı anda yapıyor birden fazla kullanıcı varsa, sık sık yanlış değerini elde edersiniz.