Unerlaubter Datenbankname 'INSERT INTO ...

icefire

Erfahrenes Mitglied
Hallo!

Ich habe ein Problem mit einem Eintrag. Die Datenbank ist Leer. Wenn ich nun Daten eintrage, kommt folgende Fehlermeldung:

Unerlaubter Datenbankname 'INSERT INTO rv_ftpdata (rv_ftp_id, rv_ftpuser, rv_ftppass, rv_ft'

Die Datenbanknamen/-struktur ist identisch mit den Namen die für den Eintrag vorgesehen sind.

PHP:
print'	<form name="gen_ftp_db" action="index.php?file=admins/gen_ftp_db" method="post">
		<tr><td width="100" class="text3">Servername:</td><td><input type="text" name="rv_ftp_gsn" size="40" value=""></td></tr>
		<tr><td><br></td><td></td></tr>
		<tr><td width="100" class="text3">Username:</td><td><input type="text" name="rv_ftpuser" size="40" value=""></td></tr>
		<tr><td width="100" class="text3">Passwort:</td><td><input type="password" name="rv_ftppass" size="20" value=""></td></tr>
		<tr><td><br></td><td></td></tr>
		<tr><td width="100" class="text3">Server Host:</td><td><input type="text" name="rv_ftphost" size="40" value=""></td></tr>
		<tr><td width="100" class="text3"><br>oder</td><td></td></tr>
		<tr><td width="100" class="text3">Server IP:</td><td><input type="text" name="ftpip1" size="2" maxlength="3">.<input type="text" name="ftpip2" size="2" maxlength="3">.<input type="text" name="ftpip3" size="2" maxlength="3">.<input type="text" name="ftpip4" size="2" maxlength="3"></td></tr>
		<tr><td><br></td><td></td></tr>
		<tr><td></td><td class="text3"><input type="submit" name="submit" value=" Eintragen "> <input type="button" value=" Abbrechen " onClick=window.location.href="javascript:history.back()"></td></tr>
		<tr><td><br><br></td><td></td></tr>
		</form>';

Das ganze wird dann wie folgt an die nächste Seite übergeben:

PHP:
if($_POST['submit']){

$verbindung = @mysql_connect($mysqlserver, $mysqluser, $mysqlpass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!"); 
$selectdb = @mysql_select_db($mysqldb, $verbindung) or die("Konnte die Datenbank <b>$mysqldb</b> nicht auswählen!"); 

if ( empty ( $_POST['rv_ftphost'] )	) {

$ftpip = $_POST['ftpip1'].'.'.$_POST['ftpip2'].'.'.$_POST['ftpip3'].'.'.$_POST['ftpip4'];

$insert = "INSERT INTO rv_ftpdata (rv_ftp_id, rv_ftpuser, rv_ftppass, rv_ftpip, rv_ftp_gsn) VALUES (  
		'".addslashes(htmlspecialchars($_POST[rv_ftp_id]))."',
		'".addslashes(htmlspecialchars($_POST[rv_ftpuser]))."',
		'".addslashes(htmlspecialchars($_POST[rv_ftppass]))."',
		'".addslashes(htmlspecialchars($ftpip))."',
		'".addslashes(htmlspecialchars($_POST[rv_ftp_gsn]))."')";

echo mysql_error();
mysql_db_query($insert, $verbindung) or die(mysql_error());		  

} else { 

$insert = "INSERT INTO rv_ftpdata (rv_ftp_id, rv_ftpuser, rv_ftppass, rv_ftphost, rv_ftp_gsn) VALUES (  
		'".addslashes(htmlspecialchars($_POST[rv_ftp_id]))."',
		'".addslashes(htmlspecialchars($_POST[rv_ftpuser]))."',
		'".addslashes(htmlspecialchars($_POST[rv_ftppass]))."',
		'".addslashes(htmlspecialchars($_POST[rv_ftphost]))."',	
		'".addslashes(htmlspecialchars($_POST[rv_ftp_gsn]))."')";

echo mysql_error();
mysql_db_query($insert, $verbindung) or die(mysql_error());	

	}
}

Ich kann mir diese Meldung leider nicht erklären. :rolleyes:
 
[phpf]mysql_db_query[/phpf] erwartet als ersten Parameter die Datenbank, als zweiten das Query und optional als 3. den DB Link. Die Funktion gilt aber auch als veraltet.

Da du die Datenbank bereits ausgewählt hast, solltest du [phpf]mysql_query[/phpf] verwenden.

7edit:
Übrigens solltest du statt [phpf]addslashes[/phpf] und [phpf]htmlspecialchars[/phpf] lieber [phpf]mysql_real_escape_string[/phpf] verwenden, um SQL Injektionen vorzubeugen.
 
Danke für den Hinweis! :p

Habe es entsprechend abgeändert:

PHP:
$insert = "INSERT INTO rv_ftpdata (rv_ftp_id, rv_ftpuser, rv_ftppass, rv_ftphost, rv_ftp_gsn) VALUES (  
		'".mysql_real_escape_string($_POST[rv_ftp_id])."',
		'".mysql_real_escape_string($_POST[rv_ftpuser])."',
		'".mysql_real_escape_string($_POST[rv_ftppass])."',
		'".mysql_real_escape_string($_POST[rv_ftphost])."',
		'".mysql_real_escape_string($_POST[rv_ftp_gsn])."')";

get_magic_quotes_gpc habe ich außer acht gelassen, da es bald wegfällt.
 
Zurück