PHP insert into SQL Problematik

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Samus
Mitglied
Beiträge: 108
Registriert: 12.01.2005 21:13
Wohnort: Remscheid

PHP insert into SQL Problematik

Beitrag 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
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Beitrag 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
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
Samus
Mitglied
Beiträge: 108
Registriert: 12.01.2005 21:13
Wohnort: Remscheid

Beitrag 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
Antworten

Zurück zu „Coding & Technik“