verbindung mit ner datenbank herstellen
chrisss
- php
Hallo Leute habe da ein Problem und zwar habe ich ein Script welches ich mit ner Datenbank verbinden will.
<?php
if (isset($_POST["v"]) &&
isset($_POST["n"]) &&
isset($_POST["e"]) &&
isset($_POST["Button"]) &&
$_POST["Button"] == "Eintragen") {
$conn = mysqli_connect("localhost", "user", "pw");
mysqli_select_db($conn, "Datenbankname");
$vorname = mysqli_real_escape_string($conn, $_POST["v"]);
$nachname = mysqli_real_escape_string($conn, $_POST["n"]);
$email = mysqli_real_escape_string($conn, $_POST["e"]);
$sql = "INSERT INTO kontakt ";
$sql .= "( vorname, nachname, email) VALUES (";
$sql .= "'$vorname', '$nachname', '$email')";
mysqli_query($conn, $sql);
mysqli_close($conn);
header("Location: mysql_uebersicht.php");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Kontakt eintragen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form method="post">
Vorname: <input type="text" name="v" /><br />
Nachname: <input type="text" name="n" /><br />
E-Mail: <input type="text" name="e" /><br />
<input type="submit" name="Button" value="Eintragen" />
</form>
</body>
</html>
Wenn ich nun den Namen usw eintrage und auf eintragen klicke kommt folgende fehlermeldung:
Fatal error: Call to undefined function: mysqli_connect() in /var/www/web208/html/test/mysql_eintragen.php on line 7!
Was mache ich falsch?
Kann mir jemand helfen?
mfg chrisss
Hi,
Wenn ich nun den Namen usw eintrage und auf eintragen klicke kommt folgende fehlermeldung:
Fatal error: Call to undefined function: mysqli_connect() in /var/www/web208/html/test/mysql_eintragen.php on line 7!
Dann scheint wohl bei dir die MySQLi-Erweiterung fuer PHP nicht installiert zu sein.
MfG ChrisB
Hi,
Wenn ich nun den Namen usw eintrage und auf eintragen klicke kommt folgende fehlermeldung:
Fatal error: Call to undefined function: mysqli_connect() in /var/www/web208/html/test/mysql_eintragen.php on line 7!Dann scheint wohl bei dir die MySQLi-Erweiterung fuer PHP nicht installiert zu sein.
MfG ChrisB
Dann scheint wohl bei dir die MySQLi-Erweiterung fuer PHP nicht installiert zu sein.
doch ist es habe nur vergessen die .htaccess-Datei zu erstellen!!
mfg chriss
So danke für die schnelle hilfe das erste Problem ist gelöst nun habe ich aber das nächste. Und zwar wie stelle ich das ein, das man sich nur einmal regestrieren kann und nicht mehrmals mit den gleichen namen usw.!
mfg chrisss
hi,
So danke für die schnelle hilfe das erste Problem ist gelöst nun habe ich aber das nächste. Und zwar wie stelle ich das ein, das man sich nur einmal regestrieren kann und nicht mehrmals mit den gleichen namen usw.!
In dem du prüfst, ob es den Usernamen in der Datenbank schon gibt.
Und natürlich die Tipps für Fragende beachten.
mfg
hi,
So danke für die schnelle hilfe das erste Problem ist gelöst nun habe ich aber das nächste. Und zwar wie stelle ich das ein, das man sich nur einmal regestrieren kann und nicht mehrmals mit den gleichen namen usw.!
In dem du prüfst, ob es den Usernamen in der Datenbank schon gibt.
Und natürlich die Tipps für Fragende beachten.
mfg
Es gibt doch aber bestimmt auch ne Einstellung oder ein Script das das automatisch überprüft sobald sich jemand mit einen gleichen Namen usw anmeldet.
mfg
hi,
Es gibt doch aber bestimmt auch ne Einstellung oder ein Script das das automatisch überprüft sobald sich jemand mit einen gleichen Namen usw anmeldet.
Mir ist keine Einstellung bekannt, du kannst aber mit PHP ganz einfach einen vergleich ausführen, Beispielsweise mit der Funktion strcmp() oder vergleichbaren String-Funktionen.
Bei mir hat schon ein ganz einfaches IF genügt, um so einen Vergleich durchzuführen:
/*
* Prüfen, ob eventuell eine Kategorie mit gleichem Namen existiert
* ebenso für Target
*/
if(isset($_POST['name']) AND $_POST['name'] == $Row['link_name'])
{
$error[] = 'Dieser Name existiert bereits in der Datenbank';
}
if(isset($_POST['target']) AND $_POST['target'] == $Row['link_target'])
{
$error[] = 'Dieser Link existiert bereits in der Datenbank';
}
Wenn es einen Fehler gibt, habe ich diesen in dem Array $error
und kann mit diesem weiterarbeiten.
mfg
Hallo,
Es gibt doch aber bestimmt auch ne Einstellung oder ein Script das das automatisch überprüft sobald sich jemand mit einen gleichen Namen usw anmeldet.
Mir ist keine Einstellung bekannt,
wie dedlfix bereits ausführte, hilft in solchen Fällen ein eindeutiger Index.
Es ist *keine* gute Idee, zuerst nachzuschauen, ob ein bestimmter Nutzer bereits existiert. Damit erzeugst Du eine Race Condition.
Es ist dagegen eine sehr gute Idee, einfach den neuen Datensatz einfügen zu wollen. Scheitert dies wegen einer Schlüsselverletzung, dann existierte der Name bereits und man kann die entsprechende Fehlermeldung ausgeben.
Freundliche Grüße
Vinzenz
hi,
wie dedlfix bereits ausführte, hilft in solchen Fällen ein eindeutiger Index.
Das war auch mein erster Gedanke, nur war ich mir nicht sicher, ob dass auch mit „nur Text“ funktioniert.
Es ist dagegen eine sehr gute Idee, einfach den neuen Datensatz einfügen zu wollen. Scheitert dies wegen einer Schlüsselverletzung, dann existierte der Name bereits und man kann die entsprechende Fehlermeldung ausgeben.
Das werde ich gleich mal versuchen, ist etwas, was ich durchaus gebrauchen kann.
Danke für die Korrektur.
mfg
echo $begrüßung;
wie stelle ich das ein, das man sich nur einmal regestrieren kann und nicht mehrmals mit den gleichen namen usw.!
Definiere genauer was du unter registrieren letzendlich verstehst. Wenn du meinst, dass du keine doppelten Datensätze in der Tabelle haben möchtest, dafür kannst du einen Unique-Index auf die Spalte(n) setzen. Beim Insert-Versuch eines gleichen Kriteriums schlägt dieser dann fehl, was du auswerten kannst.
echo "$verabschiedung $name";
Hallo,
> <?php
// Überprüfe, ob Dein Hoster Dir die Erweiterung mysqli überhaupt zur
// Verfügung stellt:
// phpinfo();
// sollte Dir weiterhelfen
// Die Verbindungsdaten wären in einer Datei, die außerhalb der
// Document-Root liegt, besser aufgehoben.
> $conn = mysqli_connect("localhost", "user", "pw");
// Bitte prüfe den Erfolg der Anweisung.
// Reagiere auf Fehler angemessen, d.h. lass das Skript nicht sterben.
> mysqli_select_db($conn, "Datenbankname");
// Warum nutzt Du nicht den entsprechenden Parameter von mysqli_connect
// noch schöner mit new mysqli ...
> $vorname = mysqli_real_escape_string($conn, $_POST["v"]);
> $nachname = mysqli_real_escape_string($conn, $_POST["n"]);
> $email = mysqli_real_escape_string($conn, $_POST["e"]);
> $sql = "INSERT INTO kontakt ";
> $sql .= "( vorname, nachname, email) VALUES (";
> $sql .= "'$vorname', '$nachname', '$email')";
// Die unnötige Kopiererei kannst Du Dir sparen, nutze z.B. sprintf(), um
// das Statement lesbarer zu halten.
> mysqli_query($conn, $sql);
> mysqli_close($conn);
// Ich vermisse die Fehlerbehandlung.
> header("Location: mysql_uebersicht.php");
// Der Location-Header will unbedingt eine absolute URI haben. Es ist kein
// großer Aufwand, diesen Fehler auszumerzen.
// Ja, ich weiß: Es funzt doch. (aber nur fast immer)
// Ja, ich sage: Beseitige solch unnötige Fehler.
Fatal error: Call to undefined function: mysqli_connect() in /var/www/web208/html/test/mysql_eintragen.php on line 7!
Was mache ich falsch?
Du hast nicht überprüft, ob Dir mysqli überhaupt zur Verfügung steht. Du kannst ganz leicht Deine Fehlerbehandlung verbessern und ein paar weitere Fehler eliminieren.
Freundliche Grüße
Vinzenz
Hallo,
<?php
// Überprüfe, ob Dein Hoster Dir die Erweiterung mysqli überhaupt zur
// Verfügung stellt:// phpinfo();
// sollte Dir weiterhelfen
// Die Verbindungsdaten wären in einer Datei, die außerhalb der
// Document-Root liegt, besser aufgehoben.$conn = mysqli_connect("localhost", "user", "pw");
// Bitte prüfe den Erfolg der Anweisung.
// Reagiere auf Fehler angemessen, d.h. lass das Skript nicht sterben.mysqli_select_db($conn, "Datenbankname");
// Warum nutzt Du nicht den entsprechenden Parameter von mysqli_connect
// noch schöner mit new mysqli ...$vorname = mysqli_real_escape_string($conn, $_POST["v"]);
$nachname = mysqli_real_escape_string($conn, $_POST["n"]);
$email = mysqli_real_escape_string($conn, $_POST["e"]);
$sql = "INSERT INTO kontakt ";
$sql .= "( vorname, nachname, email) VALUES (";
$sql .= "'$vorname', '$nachname', '$email')";// Die unnötige Kopiererei kannst Du Dir sparen, nutze z.B. sprintf(), um
// das Statement lesbarer zu halten.mysqli_query($conn, $sql);
mysqli_close($conn);// Ich vermisse die Fehlerbehandlung.
header("Location: mysql_uebersicht.php");
// Der Location-Header will unbedingt eine absolute URI haben. Es ist kein
// großer Aufwand, diesen Fehler auszumerzen.// Ja, ich weiß: Es funzt doch. (aber nur fast immer)
// Ja, ich sage: Beseitige solch unnötige Fehler.
>
> > Fatal error: Call to undefined function: mysqli\_connect() in /var/www/web208/html/test/mysql\_eintragen.php on line 7!
> > Was mache ich falsch?
>
> Du hast nicht überprüft, ob Dir mysqli überhaupt zur Verfügung steht. Du kannst ganz leicht Deine Fehlerbehandlung verbessern und ein paar weitere Fehler eliminieren.
>
>
> Freundliche Grüße
>
> Vinzenz
// Überprüfe, ob Dein Hoster Dir die Erweiterung mysqli überhaupt zur
// Verfügung stellt:
// phpinfo();
// sollte Dir weiterhelfen
danke für diesen tipp genau daran lag es jetzt funtioniert es auch wunderbar!
mfg chrisss