[PHP] Key wird nicht in MySQL Tabelle eingetragen

  • Hey,
    ich habe folgendes Problem:
    Ich bin grade dabei PHP zu lernen und wollte nen Script schreiben bei dem ein Key generiert wird und dann in eine MySQL Tabelle eingetragen wird.
    Der Key wird auch richtig generiert, aber der wird nicht in der Tabelle eingetragen.


    PHP
    <?php session_start(); include("includes/mysql_connection.php");function rand_string($lng=8) {	mt_srand((double)microtime()*1000000);	$charset = "123456789ABCDEFGHIJKLMNPQRSTUVWXYZ";	$length  = strlen($charset)-1;	$code	= '';	for($i=0;$i<$lng;$i++) {		$code .= $charset{mt_rand(0, $length)};	}	return $code;}if ($_SERVER['REQUEST_METHOD'] == 'POST') {	$key = rand_string(16);	$query = "INSERT INTO lizensen(id, key, used)"			."values('', '$key', 0)";	mysql_query($query, $MYSQL_CONNECT);}?><!doctype html><html>	<head>    	<meta charset="utf-8">    	<title>Key generieren</title>	</head>	<body>		<form action="erstellen.php" method="post">        	<table border="0">            	<tr>                	<td> </td>                	<td><input type="submit" value="Key generieren" /></td>            	</tr>        	</table>    	</form>    	<?php echo $key; ?>	</body></html>


    PHP
    <?php$MYSQL_IP 		= "localhost";$MYSQL_USER 	= "ni108707_3sql13";$MYSQL_PASS 	= "LetsTest";$MYSQL_DB 		= "ni108707_3sql13";$MYSQL_TABLE	= "lizensen";$MYSQL_KEY		= "key";$MYSQL_USED		= "used";$MYSQL_CONNECT = @mysql_connect($MYSQL_IP, $MYSQL_USER, $MYSQL_PASS);if(!$MYSQL_CONNECT) {	die("Konnte Verbung zur MySQL-Datenbank nicht herstellen: ".mysql_error());}@mysql_select_db($MYSQL_DB)		or die("Konnte die Datenbank nicht &ouml;ffnen");?>


    SQL
    CREATE TABLE `lizensen` (  `id` int(11) NOT NULL auto_increment,  `key` text NOT NULL,  `used` int NOT NULL,  PRIMARY KEY  (`id`));


    Vielleicht habt ihr ja ne Lösung wie es funktioniert.

  • 1. Die MySQL Syntax sollte schon in einer Zeile stehen


    2. Die korrekte Syntax könnte zum Beispiel so aussehen


    SQL
    INSERT INTO `DATENBANKNAME`.`lizensen` (`id`, `key`, `used`) VALUES (NULL, '$key', '0');
  • Wie sieht es denn jetzt aus, du musst es ja nicht nur in eine Zeile packen. Des weiteren solltest du bei der PHP Entwicklung eigentlich immer das Error Reporting Level auf E_ALL setzen und sämtliche MySQL Fehler ausgeben lassen.
    Ich denke, die Meldungen die dann auf einmal auftauchen, helfen weiter.

  • Du hast für die Spalte id die Eigenschaften AUTO_INCREMENT und NOT NULL gesetzt.


    Da darfst du also kein '' oder NULL setzen bei den Datensatz sondern so.


    SQL
    $query = "INSERT INTO lizensen (id, key, used) VALUES (DEFAULT, '$key', 0)";


    Default bedeutet eben das es einen Standard Wert setzt, bei AUTO Increment eben automatisch einen Wert setzt.

    Die Macht etwas zu bewirken, ist in Dir. Du musst sie nur rauslassen


    cristiano-ronaldo-525-portugal-euro-2012-banner-wallpaper.jpg