Toon posts:

[PHP/mysql] id na query terugvragen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allen,

Ik zit met een klein probleempje. Ik wil een systeem maken om artikelen met meerdere pagina's toe te voegen. Ik heb nu twee tabellen, in de één staat de algemene informatie (de gebruiker die gesubmit heeft, zijn/haar email adres, titel van het artikel, sectie etc) en in de tweede tabel moeten de pagina's komen met het pagina nummer en precies dezelfde ID als in tabel1. Een ID nummer in tabel2 kan dus meerdere keren voorkomen (voor elke pagina).

Bij tabel1 is de id dus een auto_increment, bij 2 niet. Maar nu wilde ik dus met 1 formpje zowel de eerste pagina als de hele tabel1 in laten vullen. Anders kun je ook lege artikelen submitten, dat is niet de bedoeling.

Maar het wil me niet lukken. De info is wel in tabel1 gesubmit, maar in tabel2 niet. Daarvoor heb ik de ID van tabel1 nodig, maar die maakt ie tegelijk aan. Als ik dus 3 query's doe (1=update tabel1 2=haal het id hieruit 3=gebruik deze id om tabel2 te vullen) dan werkt het niet, nummer 2 geeft dan een error 'empty query'.

Ik hoop dat het een klein beetje duidelijk is, want het is wat lastig uit te leggen. In ieder geval is mijn vraag dus hoe ik dit dan wel aan moet pakken om het werkend te krijgen..alvast bedankt voor enige antwoorden.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

mysql.com

mysql_insert_id oid d8 ik

Doet iets met Cloud (MS/IBM)


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

mysql_last_insert_id();

Localhost, sweet localhost


Verwijderd

Topicstarter
Ik heb gezocht op mysql.com, maar daar wordt je echt nooit wijs uit. Alles zal er vast wel staan maar ik kan er niet veel uit opmaken. Wat dat betreft is php.net beter :).

Dus sorry dat het zo simpel is, maar geef de webmaster van mysql.com maar de schuld :P :).

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

voer de query:
SELECT LAST_INSERT_ID()
uit als je geinsert hebt. Ik kon het eenvoudig vinden op de mysql-site

Verwijderd

Topicstarter
id is dan iedere keer '0'...

in de reacties op http://www.php.net/manual/en/function.mysql-insert-id.php staat hier ook wat over. Zie nog niet echt een duidelijke oplossing maar ben het aan het uitzoeken..

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Heb je auto_increment wel aangegeven bij de ID?

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Op donderdag 03 januari 2002 12:00 schreef Frank83 het volgende:
id is dan iedere keer '0'...

in de reacties op http://www.php.net/manual/en/function.mysql-insert-id.php staat hier ook wat over. Zie nog niet echt een duidelijke oplossing maar ben het aan het uitzoeken..
Heb je de PHP functie:
Op donderdag 03 januari 2002 11:41 schreef kvdveer het volgende:
mysql_insert_id(); (zonder last)
al geprobeerd?

[edit]
Gezien je link wel dus, nou kijk dan maar ff naar die reactie van Goodielover. Het moet namelijk wel zo zijn dat je auto_increment aan heb staan, anders weet Mysql ook niet meer wat ie moet geven.

Verwijderd

Topicstarter
Beide geeft 0, het ligt aan mysql geloof ik.

Wat ik nu heb hoort ook te werken:
code:
1
2
3
INSERT INTO articleindex (user, datum, email, title, merk,
aankondiging, aantalpaginas) VALUES ('$naam', '$datum', '$email', 
'$title', '$brand', '$aankondiging', '1')


code:
1
2
INSERT INTO articletext (id, pagina_nr, tekst) VALUES ('LAST_INSERT_ID()', 
1, '$page1')

Maar die last_insert_id() geeft 0. Dit komt omdat ie gebruik maakt van een nieuwe thread als ik het goed begrepen heb. Maar hoe ik dit moet fixen weet ik alleen niet :(.

Verwijderd

Topicstarter
[edit]foutje

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Op donderdag 03 januari 2002 12:06 schreef Frank83 een heleboel
Vraag in die eerste thread (zoals jij het noemt) het insert id op met de php functie mysql_insert_id(). Dus iets als:
PHP:
1
2
3
<?
$mysql_id = mysql_insert_id();
?>

Dan kun je die daarna $mysql_id in je query gebruiken.

Verwijderd

Topicstarter
mysql_query($query[insertinfo]) or die ("Could not add article, reason: ".mysql_error());
$id=mysql_insert_id();

Dat werkt helaas ook niet :(. Nog steeds id=0.

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Welke MySQL versie gebruik je? Omdat er nogal wat bugs staan in dat adresje wat je gaf....

Verwijderd

mysql_insert_id() werkt alleen als je auto_increment gebruikt

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Op donderdag 03 januari 2002 12:17 schreef Nokia het volgende:
mysql_insert_id() werkt alleen als je auto_increment gebruikt
Ik neem aan dat hij dat ook gebruikt, na 2 berichten waarin dat werd gevraagd....

Verwijderd

Topicstarter
Uiteraard gebruik ik auto_increment.

Momenteel versie 3.23.27 (uit PHP dev kitje op me eigen pc'tje).

Verwijderd

Op donderdag 03 januari 2002 12:17 schreef MikeN het volgende:

[..]

Ik neem aan dat hij dat ook gebruikt, na 2 berichten waarin dat werd gevraagd....
Sorry :>

Verwijderd

Topicstarter
Het is je vergeven :).

Verwijderd

Topicstarter
Maar er is niemand die mij hiermee kan helpen?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 03 januari 2002 12:30 schreef Frank83 het volgende:
Maar er is niemand die mij hiermee kan helpen?
Je moet natuurlijk niet na 4 minuten je topic omhoogschoppen...

Als het goed is werkt het zo:
mysql_query("insert into ...");
$id = mysql_insert_id();

Als dat niet zo is, test het volgende op de mysql-prompt:
- insert into ...;
- select last_insert_id();

Als ook dat wat fouts terug geeft doe je echt wat fout ergens in je insert query of heb je geen auto-increment ?

Verwijderd

Topicstarter
Aha, ik heb al weer iets gevonden.

Wat jij zegt had ik dus al gedaan, en dat gaf nog steeds id=0. Maar nu heb ik ff een
PHP:
1
2
3
<?
echo "$id";
?>

toegevoegd en dan krijg ik dus wél het juiste nummer te zien. De fout ligt er dus in dat de variabele $id later vastgesteld wordt als de query uitgevoerd. Terwijl ie er toch achter staat....maar zal script ff omgooien, kijken of het werkt.

Verwijderd

Topicstarter
ja hoor, al gefixed! Harstikke bedankt voor alle hulp!

  • DeTeraarist
  • Registratie: November 2000
  • Laatst online: 15-09 12:11

DeTeraarist

#Boots2Asses

Op donderdag 03 januari 2002 12:06 schreef Frank83 het volgende:
code:
1
2
3
INSERT INTO articleindex (user, datum, email, title, merk,
aankondiging, aantalpaginas) VALUES ('$naam', '$datum', '$email', 
'$title', '$brand', '$aankondiging', '1')


code:
1
2
INSERT INTO articletext (id, pagina_nr, tekst) VALUES ('LAST_INSERT_ID()', 
1, '$page1')
Dit werkt natuurlijk niet, in je eerste insert moet er een auto-increment zijn (euh en dat moet nog een sleutel zijn ook)

Ow te laat...

Soms, als ik heel stil ben, kan ik de zon horen schijnen


Verwijderd

Topicstarter
Als er een auto_increment instaat hoef je uiteraard in je update regel niet aan te geven dat ie nog eens geupdate moet worden. Dus aan die regel kan je niet zien of er auto_increment in staat. Maar je zei het zelf al: te laat :P.

Toch bedankt :).
Pagina: 1