Hallo ieder,
Ik zit met een probleem.
ik gebruik dit :
Als ik dit gebruik, komt er in de sql bij id 10001 te staan ipv van het eerst volgende nummer (voorbeeld) 116, hoe los ik dat op... ?!?PHP Code:
$Sql->query("INSERT INTO `test` (`id`, `owner`, `letters`, `name`, `url`) VALUES (NULL, '$owner', '$letters', '$name', '$url');");
- ID in sql gaat fout
-
14-05-2011, 12:44 #1
- Berichten
- 990
- Lid sinds
- 17 Jaar
ID in sql gaat fout
-
-
14-05-2011, 12:47 #2
- Berichten
- 750
- Lid sinds
- 15 Jaar
Re: ID in sql gaat fout
en je weet zeker dat die andere id's niet bezet wezen?
-
14-05-2011, 12:47 #3
- Berichten
- 1.470
- Lid sinds
- 19 Jaar
Re: ID in sql gaat fout
-
14-05-2011, 12:50 #4
- Berichten
- 750
- Lid sinds
- 15 Jaar
Re: ID in sql gaat fout
zelf auto increment kolommen zetten is niet zeker niet aan te raden...
Zeker niet met oog op data integriteit.
-
14-05-2011, 12:52 #5
- Berichten
- 990
- Lid sinds
- 17 Jaar
Re: ID in sql gaat fout
Het is opgelost...
tHx @ I. van Zon
@ Raymond, ik weet het maar dit lost voor mij het probleem op, gezien ik de sql helemaal aan het aanpassen ben geweest.....
Wat ik nu ook gedaan heb, is die ID er helemaal uitgehaald.....
-
14-05-2011, 13:17 #6
- Berichten
- 78
- Lid sinds
- 15 Jaar
Re: ID in sql gaat fout
Normaal gesproken laat je het veld id leeg als het auto increment is. De waarde wordt zelf gevuld ;)
PHP Code:$Sql->query("INSERT INTO `test` (`id`, `owner`, `letters`, `name`, `url`) VALUES ('', '$owner', '$letters', '$name', '$url');");
PHP Code:$id = mysql_insert_id();
$Sql->query("INSERT INTO `test` (`id`, `owner`, `letters`, `name`, `url`) VALUES ('$id', '$owner', '$letters', '$name', '$url');");
Laatst aangepast door gert smit : 14-05-2011 om 13:18 Reden: Code tags
-
14-05-2011, 13:47 #7
- Berichten
- 990
- Lid sinds
- 17 Jaar
Re: ID in sql gaat fout
@ Gert,
Inderdaad, door mijn haast had ik deze optie niet gezien, ook jij bedankt voor je input....
-
14-05-2011, 13:50 #8
- Berichten
- 935
- Lid sinds
- 17 Jaar
Re: ID in sql gaat fout
Gert,
Dat is geen verstandig advies van je. Lees maar hier wat mysql_insert_id exact doet.
http://php.net/manual/en/function.mysql-insert-id.php
mysql_insert_id — Get the ID generated in the last query
kortom: het id van de vorige insert query...en dat wil je natuurlijk niet.
Idealiter zijn alle id's auto increment en stop je ze dus nooit in de insert query.
-
16-05-2011, 11:17 #9
- Berichten
- 78
- Lid sinds
- 15 Jaar
Re: ID in sql gaat fout
Ben het met je eens Rein. De methode waarin mysql_insert_id(); gebruikt wordt is niet correct.
Ooit eens zo gebruikt in een script waar twee mensen gelijktijdig mee werken en tot op heden werkt het nog steeds... Volgens mij heb ik dit zo eens van internet geplukt zonder mij er verder in te verdiepen. Ik kreeg ook om de een of andere reden de auto_id niet gevuld.
Ik zal eens gaan kijken met een echo wat voor waarde ik krijg voor ik die query uitvoer en wat er weggeschreven wordt in de query.
Bedankt voor je advies.
Gert,
Dat is geen verstandig advies van je. Lees maar hier wat mysql_insert_id exact doet.
http://php.net/manual/en/function.mysql-insert-id.php
mysql_insert_id — Get the ID generated in the last query
kortom: het id van de vorige insert query...en dat wil je natuurlijk niet.
Idealiter zijn alle id's auto increment en stop je ze dus nooit in de insert query.
-
16-05-2011, 11:32 #10
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: ID in sql gaat fout
gewoon géén id meesturen in je query.
Insert (titel, bericht) VALUES ($titel, $bericht); (ok even kort door de bocht dit maar you get the point). Een auto-increment veld zal dit toch gewoon invullen. Scheelt je ook weer wat regels typwerk.
-
18-05-2011, 14:10 #11
- Berichten
- 94
- Lid sinds
- 17 Jaar
Re: ID in sql gaat fout
Normaal gesproken laat je het veld id leeg als het auto increment is. De waarde wordt zelf gevuld ;)
PHP Code:$Sql->query("INSERT INTO `test` (`id`, `owner`, `letters`, `name`, `url`) VALUES ('', '$owner', '$letters', '$name', '$url');");
PHP Code:$id = mysql_insert_id();
$Sql->query("INSERT INTO `test` (`id`, `owner`, `letters`, `name`, `url`) VALUES ('$id', '$owner', '$letters', '$name', '$url');");
Nog 2 tips:
- Laat je variabelen buiten quotes staan in een string....
- Bij auto increment hoef je het veld niet mee te nemen, dit wordt vanzelf verhoogd....
dus iets van:
PHP Code:$Sql->query("INSERT INTO `test` (`owner`, `letters`, `name`, `url`) VALUES ('".$owner."', '".$letters."', '".$name."', '".$url."');");
-
18-05-2011, 20:14 #12
- Berichten
- 376
- Lid sinds
- 18 Jaar
Re: ID in sql gaat fout
Code:INSERT INTO berichten SET titel = $titel, bericht = $bericht
-
18-05-2011, 20:47 #13
Elephant Media GbR
- Berichten
- 1.253
- Lid sinds
- 18 Jaar
Re: ID in sql gaat fout
Deze functie kan jullie waarschijnlijk wel erg helpen, heb deze voor m'n framework geschreven:
PHP Code:function DBinsert($arr, $in) {
$count = count($arr);
$i = 0;
foreach ($arr as $key => $value) {
$i++;
/* Setup the keys */
if ($i != $count) {
$keys .= "`". $key ."`,";
} else {
$keys .= "`". $key ."`";
}
/* Setup the values */
if ($i != $count) {
$values .= "'". $value ."', ";
} else {
$values .= "'". $value ."'";
}
}
mysql_query("INSERT INTO `". $in ."`(". $keys .") VALUES (". $values .")") or die(mysql_error());
}
PHP Code://ik heb al een database verbinding
$array = array(
title => 'Dit is mijn title',
bericht => 'Dit is mijn bericht'
);
DBinsert($array, 'mijntabel');
-
18-05-2011, 21:08 #14
- Berichten
- 751
- Lid sinds
- 15 Jaar
Re: ID in sql gaat fout
@ Ray
Hier even een uitleg hoe je het kan aanpakken (de volgende keer):
Allereerst je auto increment weer goedzetten, deze staat zoals je het nu beschrijft veel te hoog.
PHPMyAdmin -> Database -> Tabel -> Handelingen
Hier zie je een veldje staan met AUTO_INCREMENT, pas deze aan naar je volgende getal.
Vervolgens doe je dit in je script:
In plaats van het veld ID leeg te laten, per query de hoogste (en dus de laatste) ID ophalen, en de ID daarop toewijzen aan het nieuwe data. Zo loopt je ID altijd verder, ook al word er een row verwijderd, normaal gesproken zou de auto increment doorgaan op de ID na deze verwijderde objecten.
Wat trouwens ook een mogelijkheid is, via je script de auto increment te wijzigen (wat je in het eerste stap hebt gedaan ). Zodat je alsnog gewoon de ID waarde leeg kan laten bij een nieuwe data. (je update de auto increment dus zodra je iets verwijderd).
"ALTER TABLE `tabelnaam` AUTO_INCREMENT =1" (waar 1 staat voor het getal)
Hopelijk is het al opgelost, zo niet hoop ik dat je wat aan deze uitleg hebt. Mocht je er niet uitkomen kun je me altijd benaderen per PB of mail.
Groet,
gast17649
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic