Kennt sich jemand mit einfacher Herstellung von MySQL Verbindungen aus?

OP #3302466
Lesenswert?

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 #3302519
Lesenswert?

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 #3302543
Lesenswert?

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 #3302754
Lesenswert?

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...
#3302755
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren