Нужно ли включать файл коннектора db каждый раз, когда я запускаю запрос с PDO? - PullRequest
0 голосов
/ 03 июня 2011

Я сохранил следующее в моем файле dbConnect.php

$host = 'localhost';
$username = 'root';
$pass = 'mypass';

try {
    $dbh = new PDO("mysql:host=$host;dbname=horh_new", $username, $pass);
} catch (PDOException $e) {
    echo $e->getMessage();
}

Каков наилучший способ включить это в мой скрипт?Прямо сейчас у меня есть функция для вставки пользователя в базу данных, которая делает что-то вроде этого:

function insertUser($username) {
include("dbConnect.php"); // i'd like to not have to include this each time
$query = $dbh->prepare("INSERT INTO users (username) values (?)");

$query->bindParam(1, $username);
$query->execute();
}

Очевидно, что чем больше у меня функций, тем больше раз мне приходится включать этот файл dbConnect.php,Стоит ли вместо этого включать его в класс с закрытыми переменными для $ username, $ host и $ pass (чтобы не возникало конфликтов при использовании тех же переменных, переданных в функцию?

Затем включите класс один раз взаголовок моего сценария вместо каждой отдельной функции? Я совершенно новичок в PDO, поэтому я хотел бы найти наиболее эффективный способ сделать это. Спасибо.

1 Ответ

1 голос
/ 03 июня 2011

Каждый раз, когда вы включаете это, вы открываете новое соединение в области действия этой функции. Просто включите его в передний веб-файл и примените глобальное подключение к БД для каждой функции. Не включайте этот файл более одного раза, в противном случае вы откроете еще столько подключений, что приведет к ненужным замедлениям.

index.php пример:

<?php
include("dbConnect.php");
include("somefunctions.php");
// more stuff, front-facing web stuff, using stuff in somefunctions.php

somefunctions.php:

<?php
function doSomething()
{
    global $dbh;
    $query = $dbh->prepare("INSERT INTO users (username) values (?)");
   // etc.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...