daten in mySQL DB schreiben PROBLEM
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfrage
angeben
anlegen
antwort
befehl
datei
datenbank
datum
ergebnis
erstellen
formular
frage
genauem hinsehen
kopieren
login
not
null
tabelle
verbindung
zeichenkette
-
Frage: Warum funktioniert das script nicht... das script soll ne tabelle in die datenbanl anlegen mit den methoden die angegeben wurden... ?ber die jeweiligen formulare
hier das script
<?php
// ?berpr?fung ob Daten im Formular eingegeben wurden
if($login)
{
$voting_name = $_POST ['voting_name'];
$voting_frage = $_POST ['voting_frage'];
$voting_a1 = $_POST ['voting_a1'];
$voting_a2 = $_POST ['voting_a2'];
$voting_a3 = $_POST ['voting_a3'];
// 1.) mySQL Einstellungen:
// mySQL Verbindung aufbauen
$connection = mysql_connect ("localhost","user","passwort");
// mySQL Datenbank ausw?hlen
$db = mysql_select_db ("datenbank", $connection);
// 2.) mySQL Tabelle erstellen
// Frage + 3 Antwortm?glichkeiten
$sql = 'CREATE TABLE $voting_name ('; // Tabelle erstellen
$sql .= '$voting_frage varchar(255) NOT NULL ,'; // Frage anlegen
$sql .= '$voting_a1 int(8) unsigned NOT NULL auto_increment,'; // Antwort 1 anlegen
$sql .= '$voting_a2 int(8) unsigned NOT NULL auto_increment,'; // Antwort 2 anlegen
$sql .= '$voting_a3 int(8) unsigned NOT NULL auto_increment,'; // Antwort 3 anlegen
$sql .= ') TYPE=MyISAM'; // Tabellentyp
$query = mysql_query ($sql, $connection); // an mySQL Datenbank schicken
// 3.) mySQL Tabelle f?llen
// Frage + Antworten
$sql = 'INSERT INTO $voting_name (.$voting_frage.,.$voting_a1.,.$voting_a2.,.$voting_a3.) VALUES(';
$sql .= '(\' '.$voting_frage.'\', \''.$voting_a1.'\', \''.$voting_a2.'\', \''.$voting_a3.'\')';
$query = mysql_query($sql,$connection);
}
?>
<form action="write.php" method="post">
<p>
<input name="voting_name" type="text">
Name</p>
<p>
<input name="voting_frage" type="text">
Frage</p>
<p> </p>
<p>
<input name="voting_a1" type="text">
Antwort 1</p>
<p>
<input name="voting_a2" type="text">
Antwort 2</p>
<p>
<input name="voting_a3" type="text">
Antwort 3</p>
<p> </p>
<input type="submit" name="login" value="Login">
</form> -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
muss nicht die verbindung zur SQL-DB gleich an den Anfang der php.datei?
-
das ?ndert leider gar nichts ...
er schreibt einfach keine tabelle und keine merkmale in die datenbank -
Meister, was ist denn die Fehlermeldung? Nimm es mir nicht ?bel, aber ich installiere keine fremden Scripte einfach so bei mir zum debuggen. Tippe mal es passiert gar nichts :ZZZsleep:
Au?erdem musst du mindestens mal die Dateinamen angeben, denn sonst kann man dir auch nicht helfen. Was steht in welcher Datei.
Was mir aber sofort auff?llt:
1. Das Script ist unsicher. Was w?rde passieren, wenn ein Benutzer als Daten "; drop table mysql;" eingibt? --> RTFM
2.
$sql = 'CREATE TABLE $voting_name ('; // Tabelle erstellen
Nehmen wir an $voting_name w?re durch das Formular belegt mit "Paul". Was w?re der Wert von $sql?
'CREATE TABLE $voting_name(' !! Warum? Weil du eine Zeichenkette definierst. Es funktioniert so:
$sql = 'CREATE TABLE ' . $voting_name . ' ('; // Tabelle erstellen
Ergebnis ist 'CREATE TABLE Paul (', weil du eine Zeichenkette mit der Variable und einer Zeichenkette verkn?pfst. PHP-Befehle, welche in einer Zeichenkette (also zwischen dem Hochkommata ' ') stehen, werden ignoriert. Deswegen musst du "CREATE.." mit dem Inhalt der Variable verkn?pfen, was mit dem Punkt-Operator geschieht.
So, wenn es noch sicher werden soll, dann solltest du noch die Anf?hrungszeichen um alle Benutzereingaben setzen. Ist schwer zu erkennen, aber mit genauem Hinsehen... Oder in Wordpad kopieren und Schriftart Courier New mit Gr??e 14+, dann sieht man den Unterschied auch. Ansonsten RTFM MySQL-Doku
$sql = 'CREATE TABLE \'' . $voting_name . '\' ('; // Tabelle erstellen
Es empfiehlt sich generell _VOR_ dem Absetzen von SQL-Anfragen diese erst mal mit echo $query (wenn da die Anfrage drinnen ist) ausgeben zu lassen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage