MySQL — у меня проблема с моим PHP-кодом, мне нужно разделить функцию для моей базы данных

Я попытался разделить функцию, чтобы создать таблицу и подключиться к базе данных, но функция php, которая создает таблицу, мне не работает, кто-нибудь знает, как решить эту проблему? Я прилагаю код php и индекс.

prova.php:

class db_mysqls
{
public function connect()
{
$username="username";
$password="password";
try
{
$connection = new PDO("mysql:host=localhost;dbname=ijdb",$username, $password);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo ' <br> Connection Complete';
}
catch (PDOException $e)
{
echo 'Connection failed: ' . $e->getMessage();
}
}

public function createDB()
{
try
{
$sql="CREATE TABLE joke (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
joketext TEXT,
jokedate DATE NOT NULL)";
// use exec() because no results are returned
$connection->exec($sql);
echo "Table MyGuests created successfully";
}
catch (PDOException $e)
{
echo 'Creation failed: ' . $e->getMessage();
}
}
}
?>

index.php:

<html>
<head>
<title>Index.html</title>
</head>
<body>
Eseguo prova.php <br>
<?php
include 'prova.php';
$db = new db_mysqls();
echo 'New Database Object Created';
$db->connect();
$db->createDB();
?>
</body>
</html>

0

Решение

Проблема в переменной области. Все ваши переменные являются локальными. Вам необходимо создать закрытый член класса для хранения объекта соединения, чтобы оба метода могли получить доступ к одному и тому же соединению.

<?php
class db_mysqls
{
private $connection;

public function connect()
{
$username="username";
$password="password";
try
{
$this->connection = new PDO("mysql:host=localhost;dbname=ijdb",$username, $password);
$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo ' <br> Connection Complete';
}
catch (PDOException $e)
{
echo 'Connection failed: ' . $e->getMessage();
}
}

public function createDB()
{
try
{
$sql="CREATE TABLE joke (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
joketext TEXT,
jokedate DATE NOT NULL)";
// use exec() because no results are returned
$this->connection->exec($sql);
echo "Table MyGuests created successfully";
}
catch (PDOException $e)
{
echo 'Creation failed: ' . $e->getMessage();
}
}
}
?>
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector