2016-08-07 30 views
0

Ich versuche, ein einfaches Formular, das in MySQL-Datenbank gespeichert werden kann. Wann immer ich versuche mich zu verbinden, wird es mich nicht lassen. Hier ist, was ich habe:Kann keine Verbindung zu Localhost Mysql-Datenbank

PHP:

<?php 

define('DB_NAME', 'forms1'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', 'root'); 
define('DB_HOST', 'localhost'); 

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
    die('Could not connect: ' . mysqli_error()); 
} 

$db_selected = mysqli_select_db(DB_NAME, $link); 

if (!$db_selected) { 
    die('Can\'t use ' . DB_NAME . ': ' . mysqli_error()); 
} 

$value = $_POST['input1']; 
$value2 = $_POST['input2']; 

$sql = "INSERT INTO demo (input1, input2) VALUES ('$value', '$value2')"; 

if (!mysqli_query($sql)) { 
    die('Error: ' . mysqli_error()); 
} 

mysqli_close(); 
?> 

HTML:

<form action="demo.php" method="post" /> 
<p>Input 1: <input type="text" name="input1" /></p> 
<p>Input 2: <input type="text" name="input2" /></p> 
<input type="submit" value="Submit" /> 
</form> 

ich die richtigen Anmeldeinformationen, aber wenn ich meine Seite öffnen, es sagt, das „Kann nicht verwenden forms1: "

Gibt mir nicht einmal den Fehler.

Antwort

1

Es wird Ihnen eine Fehlermeldung, wenn Sie die Verbindungsvariable auf den Aufruf zu mysqli_error()

if (!$db_selected) { 
    die('Can\'t use ' . DB_NAME . ': ' . mysqli_error($link)); 
} 

dies für alle Anrufe zu mysqli_error($link) angewendet hinzufügen

The PHP MYSQLI Manual

Dieser Fehler generiert haben sollte eine PHP Wenn Sie das nicht sehen, nehme ich an, dass Sie auf einem LIVE-Server entwickeln, auf dem die Fehlerberichterstattung deaktiviert ist. In diesem Fall sollten Sie alle Ihre Skripte wie folgt starten

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

Dies wird sicherstellen, dass Sie diese Fehler im Browser sehen! Sobald ein Skript auf Fehler ist, sollten Sie wahrscheinlich diese Zeilen entfernen, wie Sie einen Benutzer nicht wollen, um diese Informationen sehen sollte etwas schief gehen, während es eine LIVE-Website ist

Auch die connect sollte den Namen der Datenbank enthalten,

<?php 

define('DB_NAME', 'forms1'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', 'root'); 
define('DB_HOST', 'localhost'); 

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME); 

if (!$link) { 
    die('Could not connect: ' . mysqli_error()); 
} 

//$db_selected = mysqli_select_db(DB_NAME, $link); 
//if (!$db_selected) { 
// die('Can\'t use ' . DB_NAME . ': ' . mysqli_error()); 
//} 

Der Aufruf mysqli_select_db() ist da, also können Sie zu einer anderen Datenbank in derselben Verbindung wechseln, wenn Sie aus irgendeinem Grund 2 Datenbanken verwenden.

I assume you are converting from the mysql_ API to mysqli_ API unfortunately the convertion is not a one to one conversion.

+0

Danke, habe ich alle Updates angewendet und es zeigt nur noch 1 Fehler: „Warnung: mysqli_select_db() erwartet Parameter 1 Mysqli, String angegeben in D zu sein: \ MAMP \ htdocs \ Grund \ demo .php in Zeile 16 ". Dies ist Zeile 16: "$ db_selected = mysqli_select_db (DB_NAME, $ link);". Es denkt nicht, dass $ link mysqli ist? –

+0

Sie brauchen nicht die 'mysqli_select_db()', da die Datenbank jetzt in der 'mysqli_connect()' erwähnt ist Deshalb habe ich es auskommentiert – RiggsFolly

+0

Ah, hab es. Ich habe es mit oder ohne es sowieso durch, aber es gibt mir einen neuen Fehler unabhängig: "Warnung: mysqli_query() erwartet mindestens 2 Parameter, 1 gegeben in D: \ MAMP \ htdocs \ basic \ demo.php online 27 ". Zeile 27 ist "if (! Mysqli_query ($ sql)) {". –