Kennt sich jemand mit einfacher Herstellung von MySQL Verbindungen aus?

OP #3302466
Hi,
ich bekomme einfach keine Verbindung her es wird immer der Fehler 3 und 
"Verbindung" ausgegeben. ("Verbindung" heißt dass eine Verbindung zum 
Server aufgebaut wurde und Fehler 3 mit der Datenbank)
Ich komme aber nicht drauf:
1
<html>
2
<head>
3
<title>Datenbank</title>
4
</head>
5
<body>
6
<?php
7
$verbindung=mysql_connect("localhost","root@localhost")or die("Fehler1");
8
if($verbindung){
9
echo "Verbindung";}else {
10
echo "Keine Verbindung";
11
}
12
mysql_select_db("datenbank")or die("Fehler3");
13

14

15
$name=$_POST["name"];
16
$email=$_POST["email"];
17
$eintragindb="INSERT INTO tabelle
18
  (name, email)
19
  VALUES
20
  ('$name','$email')";
21
  
22
  $eintragen=mysql_query($eintragindb)or die("Fehler2");
23
  if($eintragen==true){
24
  echo "Erfolgreich";
25
  }else{
26
  echo "Fehlgeschlagen";
27
  }
28

29

30
mysql_close($verbindung);
31
?>
32
</body>
33
</html>
Danke und Gruß
Persönliche Seite
Hast du den geprüft ob die Datenbank schon existiert?
Mal abgesehen davon das deine Fehlerbehandlung manchmal nicht so 
funktionieren wird wie gedacht, gibt es auch eine Funktion um sich den 
letzten Fehlertext auszugeben, die solltest du nutzen....

Es gibt in der PHP Doku doch ein verständlichen Beispiel wieso nutzt du 
das nicht? (http://www.php.net/manual/de/function.mysql-select-db.php)

Irgendwelche "Tutorials" sind, wenn man keine Ahnung hat, doch eher mit 
Vorsicht zu genießen.
Gast
> $verbindung=mysql_connect("localhost","root@localhost")or die("Fehler1");

Das "@localhost" sollte da nicht hin. Und das Passwort fehlt vermutlich.
Gast
Schon mal in's PHP-Handbuch geschaut? ...

Beispiel 1. mysql_select_db() example
1
<?php
2

3
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
4
if (!$link) {
5
    die('Verbindung nicht möglich : ' . mysql_error());
6
}
7

8
// benutze Datenbank foo
9
$db_selected = mysql_select_db('foo', $link);
10
if (!$db_selected) {
11
    die ('Kann foo nicht benutzen : ' . mysql_error());
12
}
13
?>
----------------------------------------------------------------------
Alternativ auch mit mysqli-funktionen:


Beispiel 1. Object oriented style
1
<?php
2
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
3

4
/* check connection */
5
if (mysqli_connect_errno()) {
6
    printf("Connect failed: %s\n", mysqli_connect_error());
7
    exit();
8
}
9

10
/* return name of current default database */
11
if ($result = $mysqli->query("SELECT DATABASE()")) {
12
    $row = $result->fetch_row();
13
    printf("Default database is %s.\n", $row[0]);
14
    $result->close();
15
}
16

17
/* change db to world db */
18
$mysqli->select_db("world");
19

20
/* return name of current default database */
21
if ($result = $mysqli->query("SELECT DATABASE()")) {
22
    $row = $result->fetch_row();
23
    printf("Default database is %s.\n", $row[0]);
24
    $result->close();
25
}
26

27
$mysqli->close();
28
?>
Beispiel 2. Procedural style
1
<?php
2
$link = mysqli_connect("localhost", "my_user", "my_password", "test");
3

4
/* check connection */
5
if (mysqli_connect_errno()) {
6
    printf("Connect failed: %s\n", mysqli_connect_error());
7
    exit();
8
}
9

10
/* return name of current default database */
11
if ($result = mysqli_query($link, "SELECT DATABASE()")) {
12
    $row = mysqli_fetch_row($result);
13
    printf("Default database is %s.\n", $row[0]);
14
    mysqli_free_result($result);
15
}
16

17
/* change db to world db */
18
mysqli_select_db($link, "world");
19

20
/* return name of current default database */
21
if ($result = mysqli_query($link, "SELECT DATABASE()")) {
22
    $row = mysqli_fetch_row($result);
23
    printf("Default database is %s.\n", $row[0]);
24
    mysqli_free_result($result);
25
}
26

27
mysqli_close($link);
28
?>
Anmerkung: This function should only be used to change the default 
database for the connection. You can select the default database with 
4th parameter in mysqli_connect().
Gast
Simon Name schrieb:
> Aber jetzt wird in MySQL eine Datenbank in der bei name und email steht
> immer eine 0 wenn ich etwas reinschreibe.
> Was ist da los?

Solange du keine Scripte postest, oder ähnliches, kann dir keiner 
helfen, verdamte Axt... Glaubst du wir haben hier ne Glaskugel?
Woher sollen wir wissen wie deine DB aussieht, welche felder, Datentypen 
etc...?!
Ist die DB überhaupt richtig aufgebaut? Normalisiert bis zur 3. 
Normalform?
Referenzielle-Intigrität? Sind die Beziehungen richtig? Wie viele 
Tabellen?
ERM? Welche Funktionen benutzt du um in die DB zu schreiben? Schreibst 
du direkt oder überprüfst du die Eingaben?

Also ich hab keine Glaskugel! Ergo: keine vernünftige Hilfe möglich!
Wenn ich raten muss: Du benutzt ne falsche Funktion zum reinschreiben 
oder schreibst falsche Datentypen in die Felder...
Simon Name schrieb:
> $verbindung=mysql_connect("localhost","root@localhost")or

Bitte tu Dir den Gefallen und wirf das mysql_connect und seine Kollegen 
raus und ersetze es durch PDO  http://php.net/manual/de/intro.pdo.php

Das ist eine datenbankunabhängige, sauber designte Schnittstelle für 
sowas. Du kannst damit Dein Programm dann mit überschaubarem Aufwand auf 
sqlite, Postgresql oder sonstwas umstellen. Solange Du noch am Anfang 
bist, ist das schnell umzustellen. Mach es also gleich richtig. Und 
schwieriger ist das auch nicht.

> $name=$_POST["name"];
> $email=$_POST["email"];
> $eintragindb="INSERT INTO tabelle
>   (name, email)
>   VALUES
>   ('$name','$email')";

oh,oh. http://de.wikipedia.org/wiki/SQL-Injection

richtig macht man sowas mit prepared statements, also in etwa so:
1
$sth = $dbh->prepare("INSERT INTO tabelle (name, email) VALUES (':name',':email')");
2
$sth->execute(array(':name' => $_POST["name"], ':email' => $_POST["email"]));

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.