私は自分のサイトを調べて、多くのものを共通の機能に変換して、より将来性のある、よりクリーンなものにしようとしています。
ユーザー セッション (セッション名はユーザー名) を取得する特定の関数があり、そのユーザーの他のすべてのデータを取得するデータベースに対してクエリを実行します。
一部でを使用したいのuserID
ですが、「Notice: Undefined variable」というエラーが表示されます
これは例です:
function getUserData_FromSession() {
if (isset($_SESSION['user'])) {
$username = "root";
$password = "root";
$host = "localhost";
$dbname = "06vids";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
try
{
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
}
catch(PDOException $ex)
{
die("Failed to connect to the database: " . $ex->getMessage());
}
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$stmt = $db->prepare('SELECT * FROM users WHERE username = "' . $_SESSION['user']. '"');
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()){
$userid = $row['id'];
$usernameuser = $row['username'];
}
}
}
その関数は、ページに含まれる関数ファイルにあり、そのページで次のようにします。
getUserData_FromSession();
if ($userid == $userbuildid) {
$editenabled = 'edity';
} else if ($userid !== $userbuildid) {
$editenabled = 'editx';
}
これにより、$userid が宣言されていないというエラーが発生します。実際に同じページにクエリがある場合は正常に機能しますが、どこにでも大量のクエリがポップアップすることは望ましくありません。