Bunu nasıl işledikten sonra SQL sorgu kimliği ne?

7 Cevap php

Bu biraz i işlenen sorgu id sütun değeri elde etmek istiyorsanız, karmaşık görünüyor.

Örnek:

$qu = mysql_query("INSERT INTO msgs (msg,stamp) VALUES('$v1','$v2')");  

i veritabanında infos sakladıktan sonra bu sorgunun kimliği almak istiyorum.

imkansız ise, son kimlik kaydı alma ve 1 güvenli ve garantili olacak ekliyor?

Not: PHP ve MySQL kullanmak

Teşekkürler

7 Cevap

PHP standart mysql kullanıyorsanız, yapmanız gereken tüm parametre olarak $link kaynak alır mysql_insert_id() (ki mysql bağlantısı) kullanmak için

http://php.net/manual/en/function.mysql-insert-id.php

Temel kullanım:

<?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db('mydb');

    mysql_query("INSERT INTO mytable (product) values ('some product')");

    echo 'Last inserted record has id of ' . mysql_insert_id();
?>

İşte bu üzerinde MySQL docs vardır.

http://dev.mysql.com/doc/refman/5.1/en/getting-unique-id.html

Bir auto_increment sütun varsa, PHP fonksiyon mysql_insert_id kullanın.

Hayır, en yüksek id kapmak ve sadece 1 eklemek ve yeni kimliği olarak kullanan güvenli değildir. Bu bir yarış durumu olarak bilinen şeydir. Iki sorgu aynı zamanda bu işlemi yapmak için çalışırsanız, bu ikisi AYNI yüksek id, 1 eklemek için her iki girişimi, ve sonra aynı id (kötü olurdu) kullanmaya teşebbüs seçtiğinizden emin olabilir.

Bu yaptığınızı olarak Otomatik artma alanları kullanmak, ve aşağıdaki gibi PHP eklenen id alabilirsiniz çok iyi (itibaren http://php.net/manual/en/function.mysql-insert-id.php):

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());
?>

İşte kod:

$qu = mysql_query("INSERT INTO msgs (msg,stamp) VALUES('$v1','$v2')"); 
$recent_id = mysql_insert_id();

Değişken recent_id aradığınız budur.

Son kimlik kaydı alınıyor ve 1 ekleyerek güvenli ve garantili DEĞİLDİR olmayabilir. Eğer gerçekten güvenli oynamak istiyorsanız ben belirttiler çözümünü kullanarak daha iyi.

Umarım yardımcı olur.

Umarım bu yardımcı olur:

int mysql_insert_id ([ resource $link_identifier ] )

http://us3.php.net/mysql_insert_id

here kontrol o `eğer php için mysqli kullanmak için sorun değil