Ik heb even een vraag over mysql_insert_id();

ik heb een stukje script:

$host = "server";
$username = "username";
$password = "password";
$dbnaam = "databasenaam";
$fout = "FOUT : openen database mislukt";

$db = mysql_connect($host, $username, $password) or die($fout);
mysql_select_db($dbnaam, $db) or die($fout);

nu heeft hij dus verbinding gemaakt met een database waarin 3 tabellen staan: producten, aanbiedingen en members. Nu wil ik de hoogste id weten uit de tabel members en opslaan in de variabele $maxid.

Wie kan mij helpen? Alvast bedankt

Jan Smit
SELECT id FROM members ORDER BY id DESC LIMIT 0,1
dan krijg ik toch niet de hoogste id terug uit die tabel?
ORDER -> sorteer op de kolom 'id' en begin met de hoogste, eindig met de laagste
LIMIT -> neem alleen de eerste uit de resultaten.
Kan dit ook met mysql_insert_id() ? daar ging het eigenlijk om :)
if($sql_result = mysql_query('SELECT id FROM members ORDER BY id DESC LIMIT 0,1')){
$userinfo = mysql_fetch_assoc($sql_result);
$maxis = $userinfo['id'];
}
Even ter verduidelijking.

mysql_insert_id() = heel anders dan max.
Wat mysql_insert_id() doet, voorbeeld:

<?php
mysql_query("INSERT INTO producten (naam) VALUES ("testproduct")");
$laatsteId = mysql_insert_id();
?>

mysql_insert_id() haalt het id op van het toegevoegde product. Oftewel de productnr, mits deze de auto_increment optie aan heeft.

Dus mysql_insert_id() is heel handig als je direct het laatst toegevoegde productnr wilt hebben.
Dit kan toch ook?

<?php
$query = mysql_query("SELECT MAX(id) AS maxid FROM members");
$rij = mysql_fetch_array($query);

$maxid = $rij['maxid'];
?>
Jah dat moet ook kunnen!
Barman schreef op 04.09.2005 19:36
Even
<?php
mysql_query("INSERT INTO producten (naam) VALUES ("testproduct")");
$laatsteId = mysql_insert_id();
?>


Voor de perfectionisten:

ipv ("testproduct") moet het natuurlijk ('testproduct') zijn. :)
2 scripten, de één doet het, de ander niet:

<?php

$host = "server";
$username = "user";
$password = "pass";
$dbnaam = "db";
$fout = "FOUT : openen database mislukt";

$db = mysql_connect($host, $username, $password) or die($fout);
mysql_select_db($dbnaam, $db) or die($fout);

$db = "members"; // de naam van de tabel uit de db
$laatsteID = mysql_insert_id($db);
echo($laatsteID);

?>

deze doet het niet. Dan krijg ik de foutmelding:

Warning: mysql_insert_id(): supplied argument is not a valid MySQL-Link resource in /www/users/stijnvanroessel.downfire.com/geregistreerd.php on line 24

Dit script doet het wel:

<?php

$host = "server";
$username = "user";
$password = "pass";
$dbnaam = "db";
$fout = "FOUT : openen database mislukt";

$db = mysql_connect($host, $username, $password) or die($fout);
mysql_select_db($dbnaam, $db) or die($fout);

mysql_query("INSERT INTO members VALUES ('','enz','enz')");
$laatsteID = mysql_insert_id();
echo($laatsteID);

?>

Maar dan wordt wel iedere een rij toegevoegd in de database. Hoe kan ik de juiste laatst toegevoegde id terugkrijgen zonder dat er een rij wordt toegevoegd met mysql_insert_id(); ??

Reageren