Forum: PC-Programmierung Kennt sich jemand mit einfacher Herstellung von MySQL Verbindungen aus?


von Simon N. (ardi)


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ß

: Verschoben durch User
von Mike M. (mikeii)


Lesenswert?

Einloggen vergessen? Passwort und Username?

von Peter II (Gast)


Lesenswert?

warum nenn schon wieder ein thread!

Beitrag "MySQL Verbindung aufbauen"

wenn du keinen Fehler findest, musst du wohl in den php.error schauen.

von Läubi .. (laeubi) Benutzerseite


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.

von aassasas (Gast)


Lesenswert?

> $verbindung=mysql_connect("localhost","root@localhost")or die("Fehler1");

Das "@localhost" sollte da nicht hin. Und das Passwort fehlt vermutlich.

von Kaj (Gast)


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().

von Kaj (Gast)


Lesenswert?

und ein
1
error_reporting(E_ALL);
am anfang vom php-script hat noch keinem geschadet.

von Simon N. (ardi)


Lesenswert?

Hat geklappt ohen @localhost

von Simon N. (ardi)


Lesenswert?

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?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Simon Name schrieb:
> Was ist da los?

Du machst was falsch und anstelle von strukturierter Analyse stocherst 
du im Nebel.

von Kaj (Gast)


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...

von Gerd E. (robberknight)


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"]));

von Simon N. (ardi)


Lesenswert?

Habs gelöst:
Ich habe ausversehen Anstatt TEXT auf INT gelassen.
Gruß und Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.