Seite 1 von 1

PHP insert into SQL Problematik

Verfasst: 25.07.2008 12:06
von Samus
Guten Morgen,

ich habe mich gestern dran gesetzt und ein sehr simples Registrierungssystem geschrieben. Nun es ist alles gut, bei der Registrierung wird die Maximale ID abgefragt und dann beim Insert +1 gezählt und in die SQL gehauen. Sobald aber die ID bei 10 anlangt, werden sämtliche erneuten Registrierungen ebenfalls mit der ID 10 abgelegt.

Das Feld in der Tabelle :

Code: Alles auswählen

 _id 	varchar(20) (...)
Der PHP Code :

Code: Alles auswählen

	include_once"inc/config.inc.php";
	$con2 = mysql_connect($dblog_location,$dblog_user,$dblog_psswd);

	$abfrage = "SELECT MAX(_id) from `tabelle`";


	$erg = mysql_db_query("$dblog_db",$abfrage,$con2);

	$out = "";
	while (list($maxid) = mysql_fetch_row($erg))


	{

	$db = mysql_connect("localhost","root","root");

	mysql_select_db("page_inhalte",$db);

   if ($gesendet)
   {
	
$maxid++;
$maxi=$maxid;
 $ed = getdate ();
		if (!$name == ""){
		$sql= "INSERT INTO `tabelle` (`_id`, [...] ) VALUES('$maxi', [...] )";


		$result = mysql_query($sql) OR die(mysql_error());
[...] hier hab ich Codesegmente rausgenommen die nicht relevant zu dem Problem sind

$maxid++;
$maxi=$maxid;
Bringt die SQL dazu den Maximum Wert + 1 wieder in die SQL zu übernehmen. Jedoch wie gesagt, hört der Code auf, ab 10 weiterhochzuzählen.

Was habe ich übersehen?

Danke für Hilfe

mfg

Verfasst: 25.07.2008 14:06
von cYbercOsmOnauT
Wenn die _id eine Zahl ist, wieso setzt Du die Zelle dann als VARCHAR? Einfach davon ausgehen, dass der SQL Server für ein MAX aus dem VARCHAR ein INT macht ist m.E. der falsche Weg. Ich an Deiner Stelle würde die Zelle auf einen INT-Wert setzen, der zu dem passt, was für _id möglich ist INT(10) oder vielleicht auch MEDIUMINT(...)

Zweitens kapier ich Deinen Code so, dass Du einen Maximalwert aus einer DB liest und diesen in eine komplett andere schreiben willst.

Ein Maximalwert jedoch gibt nur einen einzigen Wert zurück. Somit ist ein while unnötig, weil die Schleife nur eine Runde dreht.

Grüße,
Tekin

Verfasst: 25.07.2008 14:18
von Samus
Ich lese den Max Wert aus derselben Tabelle aus, und füge in die Tabelle neue Werte ein. Das While is da drin, weil ich die Var haben wollte und das erstmal schnell gehen sollte. Mit einer anderen Lösung für das gesamte Ding befasse ich mich, sobald alles so läuft wie es soll.

Das mit dem INT hat hingehauen, frag mich bitte nicht warum ich nen VARCHAR genommen hab *g* Wohl in der Eile falsch geschaltet.

Nun geht es mit dem hochzählen auch über 10. Damit kannsch nu weiterarbeiten.

Danke und mfg