Problem mit MySQL und Variable

  • Themenstarter Themenstarter SilverVegeto
  • Beginndatum Beginndatum
S

SilverVegeto

Hallo,
ich habe ein Problem wenn ich eine Tabelle erstellen möchte mit einer Variable funktioneirt das nicht da in der Tabelle keine Variable drin ist. Das komische ist wenn ich einfach einen Text reinschreiben möchte hat die Tabelle einen Inhalt also muss ich etwas an den Variablen falsch gemacht haben.
PHP:
<tr>
  <td width="49%" height="25" class="inhalt">&nbsp;<b>Nickname</b></td>
  <td width="49%" align="right"><input type="text" name="nick_acp" value="" size="30" maxlength="30">&nbsp;</td>
</tr>
<tr>
  <td width="49%" height="25" class="inhalt">&nbsp;<b>eMail</b></td>
  <td width="49%" align="right"><input type="text" name="email_acp" value="" size="30">&nbsp;</td>
</tr>
<tr>
  <td width="49%" height="25" height="25" class="inhalt">&nbsp;<b>Passwort</b></td>
  <td width="49%" align="right"><input type="password" name="passwort_acp" value="" size="30">&nbsp;</td>
</tr>

PHP:
$nick_acp = $_POST['nick_acp'];
$passwort_acp = $_POST['passwort_acp'];
$email_acp = $_POST['email_acp'];
$acp_user = "INSERT INTO ".$prefix."_ACP_User (Name, Password, Email) 
	VALUES 
	('$nick_acp',
	'$passwort_acp',
	'$email_acp')";
$acp_user_2 = mysql_query($acp_user);
 
Ich hoffe ich habe Dich richtig verstanden.
Er trägt die Daten aus Deinem Formular nicht in der Datenbank ein. Richtig?

Wie hast Du denn das Formular deklariert? Mit Post oder Get?

<form method="Post"> oder <form method="Get">

Marcus
 
Sry, wenn ich mich undeutlich ausgedrückt habe. Ja, es trägt keine Daten in die Datenbank ein.

method="post" ist mein FORM-Modus.
 
Steht in Post überhaupt was drin:

print_r($_POST);

bzw. ist der $prefix richtig gesetzt?

echo $acp_user;

Marcus.
 
Also, es müsste normal alles stimmen.
Es werden auch zwei andere Tabellen erstellt der Inhalt wird aber nicht mit Variablen sondern mit Text (von mir vorgegeben) gespeichert.

Wenn ich bei der Tabelle auch einen Inhalt vorgebe sprich keine Variable sondern Text "abcd..." dann wird es auch gespeichert - deswegen muss das Problem bei den Variablen liegen.
 
Probier mal Folgendes:
PHP:
<?php

	…
	$query = "
		INSERT INTO
		        `".$prefix."_ACP_User`
		  SET
		        `Name`     = '".mysql_real_escape_string($_POST['nick_acp'])."',
		        `Password` = '".mysql_real_escape_string($_POST['passwort_acp'])."',
		        `Email`    = '".mysql_real_escape_string($_POST['email_acp'])."'

		";
	mysql_query($query) or die('<p>Datenbankabfrage schlug fehl: '.htmlentities(mysql_error()).'</p><pre>'.htmlentities($query).'</pre>');
	…

?>
Ürbigens solltest du Passwörter aus Sicheriets- und Datenschutzgründen nie als Klartext sondern in kryptischer Form (beispielsweise als sog. Hash-Wert) speichern.
 
Zuletzt bearbeitet:
Dein Beispiel ist etwas sehr kompliziert, denn bei den anderen zwei Tabellen habe ich auch eine Datumvariable genommen und da funktioniert das auch.
PHP:
$datum = date("d.m.y");
$uhrzeit = date("H.i");
$history = "INSERT INTO ".$prefix."_History (Inhalt, Autor, Datum) 
	VALUES 
	('Es war einmal...',
	 'Installation',
	 'am $datum um $uhrzeit Uhr')";
$history_2 = mysql_query($history);
 
Gumbo möchte gerne die Fehlermeldung sehen.
Darum der Code.

Es muss aber glaube ich mysql_query($query) und nicht mysql_query($acp_user) heißen.
 
Es gibt ja keine Fehlermeldung die Tabelle wird ja erstellt nur ohne Inhalt, dass komische ist ja nur das beim Datum das Problemlos funktioniert.
 
Mir geht es nicht nur um die Einbindung einer Fehlerbehandlunge, sondern auch um die Nutzung der mysql_real_escape_string()-Funktion zur „Entschärfung“ der Benutzereingaben.
Probier einfach meinen Vorschlag 1:1.

Übrigens wird bei den oben erwähnten MySQL-Anfragen keine Tabellen erstellt, sondern nur Datensätze an eine bestehende angefügt.
 
Zurück