• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

MySQL Query - Datenbank

donstreiff

New member
Hallo Zusammen

Ich arbeite mit MySQL Query Datenbank und habe ein kleines denkproblem^^

PHP:
		<?php
			$array = explode("\n",$_POST['Moderation']);
			foreach($array as $exarray)
			echo $exarray,"<br />";$
			$datenbank = mysql_connect("localhost","benutzername","passwort") or die ("Verbindung fehlgeschlagen: ".mysql_error());
			$verbunden = mysql_select_db("Tabellenname") or die ("Datenbank nicht gefunden oder fehlerhaft");
			$sql_befehl = mysql_query("INSERT INTO tabelle (Moderation) VALUES ('".$_POST['exarray']."')");
		?>

Und was ich jetz nicht begreife ist mysql_select_db("Tabellenname"). Bei mir gibt es verschiedene Schemas für die verschiedenen Websiten und dort sind dann jeweils die tabellen. Wenn ich jetz also den Tabellenname angebe, findet er diese nicht. Gebe ich aber das Schema an, gibt er keine Fehlermeldung doch kommt dann auch nicht zu der Tabelle die ich ansprechen will...
Vlt. stimmt mein Code acuh nicht^^

Besten Dank für eure Hilfe

LG
 
Gebe ich aber das Schema an, gibt er keine Fehlermeldung doch kommt dann auch nicht zu der Tabelle die ich ansprechen will...
Vlt. stimmt mein Code acuh nicht^^
Es sollte Dich stutzig machen, dass Du Variablen hast, denen Du nur einen Wert zuweist, um sie oder den Wert darin dann nie wieder zu verwenden. Du solltest Dir mal das PHP Manual zu den betroffenen mysql_* Funktionen anschauen.

Außerdem: SQL-Injection Alarm.
 
Ok ich habe es jetzt verstanden^^

Aber wie das genau geht weiss ich nicht.

PHP:
		<?php
			$array = explode("\n",$_POST['Moderation']);
			foreach($array as $exarray)
			$datenbank = mysql_connect("localhost","Benutzername","Passwort") or die ("Verbindung fehlgeschlagen: ".mysql_error());
			$verbunden = mysql_select_db("Schemaname") or die ("Datenbank nicht gefunden oder fehlerhaft");
			$sql_befehl = mysql_query("INSERT INTO Tabellenname(Zeile) VALUES ('".$_POST['exarray']."')");
		?>
		<form method="post">
		<p>Moderation</p>
			<textarea name="Moderation" cols="20" rows="5"></textarea>

Also was ich probiere ist vom textarea die daten in eine Datenbank zu schreiben. Ich habe es so gemacht das man mehrere Daten gleichzeitig per Enter angeben kann. Mit explode teile ich sie und speichere sie einzeln in exarray. Danach verbinde ich mit der Datenbank, was funktioniert und probiere etwas reinzuschreiben.

Was nicht geht: Es schreibt nichts in die Datenbank.

Was bis jetzt passiert: neben dem textarea steht eine 0 :confused: und in der Datenbank wird pro submit eine leere Zeile gemacht(die ID erhöchert sich aber es schreibt nichts bei der Info Zeile(=textarea))

Für ganze Klarheit :) :

ID Info(textarea)
1
2
3
4
 
Es sollte Dich stutzig machen, dass Du Variablen hast, denen Du nur einen Wert zuweist, um sie oder den Wert darin dann nie wieder zu verwenden. Du solltest Dir mal das PHP Manual zu den betroffenen mysql_* Funktionen anschauen.

Außerdem: SQL-Injection Alarm.

Antwort #3 war für die Frage was ich nicht verstehe mit dem Schema und so...(um missverständnis zu verhindern^^)

Also muss ich erst noch nachschauen und werde nochmals auf dich zu kommen wenn ich deine Antwort nicht versteh.

Besten dank für die Antwort

LG
 
Es sollte Dich stutzig machen, dass Du Variablen hast, denen Du nur einen Wert zuweist, um sie oder den Wert darin dann nie wieder zu verwenden. Du solltest Dir mal das PHP Manual zu den betroffenen mysql_* Funktionen anschauen.

Außerdem: SQL-Injection Alarm.

Also was ich jetz schon mal nicht verstehe ist, welche Variablen du meinst die ich nie wieder brauche :confused:

Bei PHP Manual habe ich schon mehrmals gesucht, doch dort ist meist erklärt wie man etwas holt und nicht schreibt... ich finde einfach auch nicht das richtige, da ich auch nicht weis was ich brauche...(kompletter Neuling)

Was es ja schon macht ist eine leere Zeile zuschreiben. Was ich also denke ist das ich die daten nach dem foreach anderst übergeben muss, da man das so nicht darf...

Vlt. kannst du mir da helfen...so das ich weiss wo es dann bei mir hackt.

Besten Dank für jegliche Hilfe

LG
 
Also was ich jetz schon mal nicht verstehe ist, welche Variablen du meinst die ich nie wieder brauche :confused:
Wo verwendest Du $datenbank, $verbunden oder $sql_befehl noch einmal?

Ansonsten hast Du drei mysql_* Befehle, Du hast jetzt aber nur nach dem dritten geschaut.
Was das Schreiben von Daten angeht, so solltest Du Dir einfach mal Dein zusammengebautes Statement ausgeben lassen und dieses in einem SQL-Query-Fenster (z.B. phpMyAdmin) mal von Hand ausführen. Da Du Dir ja nicht anschaust, welche Fehlermeldungen mySQL eventuell liefert, tappst Du natürlich auch im Dunkeln. Tools wie phpMyAdmin zeigen Fehler aber an, und damit solltest Du sehen, was falsch läuft.
Du kannst halt nicht einfach ein Array in Deiner Datenbank speichern, oder gar erwarten, dass dabei mehrere Zeilen entstehen.
 
Wo verwendest Du $datenbank, $verbunden oder $sql_befehl noch einmal?

Ansonsten hast Du drei mysql_* Befehle, Du hast jetzt aber nur nach dem dritten geschaut.
Was das Schreiben von Daten angeht, so solltest Du Dir einfach mal Dein zusammengebautes Statement ausgeben lassen und dieses in einem SQL-Query-Fenster (z.B. phpMyAdmin) mal von Hand ausführen. Da Du Dir ja nicht anschaust, welche Fehlermeldungen mySQL eventuell liefert, tappst Du natürlich auch im Dunkeln. Tools wie phpMyAdmin zeigen Fehler aber an, und damit solltest Du sehen, was falsch läuft.
Du kannst halt nicht einfach ein Array in Deiner Datenbank speichern, oder gar erwarten, dass dabei mehrere Zeilen entstehen.

Also wenn ich das jetzt richtig verstehe kann ich zu erst mal all die Variablen weglassen und es einfach so hinschreiben:
PHP:
            mysql_connect("localhost","Benutzername","Passwort") or die ("Verbindung fehlgeschlagen: ".mysql_error());
            mysql_select_db("Schemaname") or die ("Datenbank nicht gefunden oder fehlerhaft");
            mysql_query("INSERT INTO Tabellenname(Zeile) VALUES ('".$_POST['exarray']."')");

Und so wie ich das andere versteh muss ich im foreach{} angeben,1 angabe ins feld bei id 1, 2 angabe ins feld bei id2 usw. Und mit foreach geht es ja dann das ganze array durch. Ist das so richtig gedacht?

Danke


LG
 
Du solltest dringend ein
Code:
error_reporting(E_ALL);
machen!
Code:
 mysql_query("INSERT INTO Tabellenname(Zeile) VALUES ('".$exarray."')");

Außerdem solltest du nichts in die Tabelle einfügen, wenn auch nichts übertragen wurde.

Viertens ist es nicht besonders toll, für jede neue Query mysql_connect und _select_db aufzurufen - einmal genügt völlig.

@Albu: der link_identifier ist optional.
 
@Albu: der link_identifier ist optional.
Ich finde es unsauber, wenn es fehlt, spätestens wenn man mit mehreren Datenbanken jongliert, dann fällt man mit seiner dann angewöhnten Auslassung auf die Nase. Der Mehraufwand die sowieso schon angelegte Variable korrekt zu übergeben, ist so minimal, dass man sich das als guten Stil getrost angewöhnen kann.

Allerdings habe ich noch nie mit diesen "low-level" Funktionen zum Datenbankzugriff gearbeitet, ich nutze i.d.R. entsprechende Bibliotheken, um eine Abstraktion vom eingesetzten RDBMS zu erreichen.
 
Ich finde es unsauber, wenn es fehlt, spätestens wenn man mit mehreren Datenbanken jongliert, dann fällt man mit seiner dann angewöhnten Auslassung auf die Nase. Der Mehraufwand die sowieso schon angelegte Variable korrekt zu übergeben, ist so minimal, dass man sich das als guten Stil getrost angewöhnen kann.
Stimm' ich dir völlig zu.
Allerdings habe ich noch nie mit diesen "low-level" Funktionen zum Datenbankzugriff gearbeitet, ich nutze i.d.R. entsprechende Bibliotheken, um eine Abstraktion vom eingesetzten RDBMS zu erreichen.
Dito - wenn man dann auch noch eine objektorientierte verwendet, hat man gar kein Problem mehr, die einzelnen DB voneinander zu trennen.
 
Zurück
Oben