私はすべての古いmysql_関数をPDOに変換し始めており、この概念を理解するのに少し問題があります。各関数の先頭に接続スクリプトを作成せずに必要に応じて呼び出すことができるように、関数ページ全体でPDO接続変数にアクセスできるようにしたいと考えています。私は自分のセットアップを可能な限り説明しようとします。
これは、必要なすべてのphpページをロードする私のinit.phpページです。このページは私の各ページの上部に含まれていますが、機能ページには含まれていません。
init.php
<?php
session_start();
error_reporting(E_All);
require 'database/connect.php';
require 'functions/users.php';
require 'functions/general.php';
require 'functions/trainer.php';
?>
これが私のdb接続を開く接続ファイルです。はいmysql_connect
、他のすべての機能をPDOに変換している間は他のすべての機能を無効にできないため、私も開いています。
connect.php
<?php
$connect_error = 'Sorry there is a problem with the database connection.';
mysql_connect('Localhost', 'customn7', 'I<3deadlifts!') or die($connect_error);
mysql_select_db('customn7_cm') or die($connect_error) or die($connect_error);
?>
<?php
//PDO database connect
$config['db'] = array(
'host' => 'Localhost',
'username' => 'customn7',
'password' => '********',
'dbname' => 'customn7_cm'
);
try {
$db = new PDO('mysql:host=' .$config['db']['host']. ';dbname=' .$config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec("SET CHARACTER SET utf8");
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>
functions/trainer.php
これが関数が書かれている私の場所です:
trainer.php
function exist_client_to_class($cd){
list($user_id, $class_id, $first_name, $last_name, $nickname) = explode('|', $cd);
try{
$stmt = $db->prepare('INSERT INTO clients
(`user_id`, class_id, first_name, last_name, nickname, date)
VALUES (:user_id, :class_id, :first_name, :last_name, :nickname, CURDATE())
');
$stmt->execute(array(
':user_id' => $user_id,
':class_id' => $class_id,
':first_name' => $first_name,
':last_name' => $last_name,
':nickname' => $nickname)
);
}
catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
}
$db
現在のところ、trainers.phpページから変数にアクセスできません。誰かがこれを手伝ってくれますか?
アップデート
関数を呼び出すコードは次のとおりです。
// Post Selected name to current class.
if (isset($_POST['exist_to_class'])){
if (empty($_POST['client_data']) === true){
$errors [] = 'You much select a client to be added to the class.';
} else {
if (isset($_POST['client_data']) && !empty($_POST['client_data']));
foreach ($_POST['client_data'] as $cd){
exist_client_to_class($db, $cd);
header('Location: view_class.php?class_id='.$class_id.' ');
} // foreach $cd
} // else
} //isset