Ich kann keine Verbindung zu meiner Datenbank herstellen, wenn ich diese Dateien verwende. Hier sind sie mit dem PHP-Code.Probleme beim Herstellen einer Verbindung zur mysql-Datenbank bei Verwendung einer Konfigurationsdatei
Die db_config.php
Datei:
<?php
define('DB_USER', "root");
define('DB_PASSWORD', "mypassword");
define('DB_DATABASE', "mydbname");
define('DB_SERVER', "localhost");
?>
Die db_connect.php
Datei:
<?php
class DB_CONNECT
{
//constructor
function __construct()
{
$this->connect();
}
//destructor
function __destruct()
{
$this.close();
}
function connect()
{
// import database connection variables
require_once __DIR__ . '/db_config.php';
$con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
$db = mysql_select_db(DB_DATABASE) or die(mysql_error());
// returing connection cursor
return $con;
}
function close()
{
//closing db connection
mysql_close();
}
}
?>
Die add_team.php
Datei:
<?php
$response = array();
if(isset($_POST['team_full_name']) && isset($_POST['team_short_name']) && isset($_POST['league']))
{
$team_fn = $_POST['team_full_name'];
$team_sn = $_POST['team_short_name'];
$league = $_POST['league'];
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("INSERT INTO teamData (team_full_name, team_short_name, league) VALUES ('$team_fn', '$team_sn', '$league')");
if($result)
{
$response["success"] = 1;
$response["message"] = "Team Data successfully added.";
echo json_encode($response);
}
else
{
$response["success"] = 0;
$response["message"] = "Error occurred!";
echo json_encode($response);
}
//for testing
//mysql_close($dbhandle);
}
else
{
$response["success"] = 0;
$response["message"] = "Required field(s) is missing.";
echo json_encode($response);
}
?>
Wenn ich diese Dateien verwenden, die add_team.php
Datei, mein Programm auszuführen stürzt ab (in Java). Aber wenn ich die add_team.php
Datei ändern nicht verwenden, um die DB_CONNECT
Klasse wie folgt:
<?php
$response = array();
if(isset($_POST['team_full_name']) && isset($_POST['team_short_name']) && isset($_POST['league']))
{
$team_fn = $_POST['team_full_name'];
$team_sn = $_POST['team_short_name'];
$league = $_POST['league'];
$dbhandle = mysql_connect("localhost", "root", "mypassword") or die ("unable to connect to MySQL");
$db = mysql_select_db("mydbname", $dbhandle);
$result = mysql_query("INSERT INTO teamData (team_full_name, team_short_name, league) VALUES ('$team_fn', '$team_sn', '$league')");
if($result)
{
$response["success"] = 1;
$response["message"] = "Team Data successfully added.";
echo json_encode($response);
}
else
{
$response["success"] = 0;
$response["message"] = "Error occurred!";
echo json_encode($response);
}
mysql_close($dbhandle);
}
else
{
$response["success"] = 0;
$response["message"] = "Required field(s) is missing.";
echo json_encode($response);
}
?>
es perfekt funktioniert. Ich folgte einem Tutorial und die Version, die nicht funktioniert, ist, wie der Typ gesagt hat, es einzurichten. Was mache ich falsch? Ich bin neu bei PHP, also entschuldige mich, wenn du Aussagen siehst, die veraltet sind, werde ich sie später ändern. Ich verwende sie, weil das Tutorial, dem ich folgte, ziemlich alt ist und ich nicht weiß, wie man die nicht veralteten Alternativen noch benutzt.
Auch ich mag diese Konfiguration der Konfigurationsdatei mit der DB_CONNECT
Klasse, weil ich nicht mein Datenbankkennwort in den PHP-Dateien, die Datenbanktransaktionen durchführen, hart Code. Es scheint ein bisschen sicherer als die Version, die funktioniert. Also, wenn ich die bessere Version funktioniere, ist das ein gutes Setup? Was ist, wenn ich mehrere Einfügungen, Aktualisierungen, Löschungen usw. gleichzeitig vornehmen möchte? Muss ich mich jedes Mal, wenn ich eine meiner PHP-Dateien, die eine Datenbanktransaktion durchführen, aufrufen, erneut verbinden und trennen?
Ist es normal, dass Sie in Ihrer 'DB_CONNECT' Klasse ein' mysqli' Objekt mit 'mysql_ *' Funktionen verwenden? – Aurel
@Aurel Oh vergessen, es auf die ursprüngliche Weise zu ändern, die ich hatte. Ich habe verschiedene Dinge getestet. Aber es funktionierte immer noch nicht. Ich werde es wieder auf die ursprüngliche Weise ändern, die ich hatte, um es konsistenter zu halten. –
Warum Sie "oops" und "prozedurale" Formate mischen, wenn Sie keine Klasse erstellen müssen, rufen Sie diese Klasse auf? Warum??? – itzmukeshy7