データベースをチェックするコードを関数化しようとしているのですが、うまくいきません。
関数化しないときは、うまく動作します。
関数化する前の文(想定通りの動作をします)
try { global $wpdb; $users_table = $wpdb->prefix . "users"; //ユーザーテーブルを定義 $session_ID = $_SESSION["ID"]; //セッションIDを定義 $check_DB_users_table = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $users_table WHERE ID = %d", "$session_ID" ), ARRAY_A ); } catch( PDOException $e ) { // PDOException の場合のみ wp_die('データベースエラーが発生しました。'); } catch( Exception $e ) { // PDOException でキャッチできなかった例外はこっち wp_die('何らかのエラーが発生しました。'); } echo $check_DB_users_table['user_email'] //ユーザーテーブルの指定されたIDに登録されたメールアドレスが出力されます。
上の文を関数化した結果、うまくいかない例
function check_DB_users_table_by_id() { try { global $wpdb; $users_table = $wpdb->prefix . "users"; //ユーザーテーブルを定義 $session_ID = $_SESSION["ID"]; //セッションIDを定義 $check_DB_users_table = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $users_table WHERE ID = %d", "$session_ID" ), ARRAY_A ); } catch( PDOException $e ) { // PDOException の場合のみ wp_die('データベースエラーが発生しました。やり直してください。'); } catch( Exception $e ) { // PDOException でキャッチできなかった例外はこっち wp_die('何らかのエラーが発生しました。やり直してください。'); } } //関数を実行 check_DB_users_table_by_id(): echo $check_DB_users_table['user_email'] //何も出力されない
関数化する前はうまくいくコードが、関数化したら動かなくなってしまう原因がわからず、頭がこんがらがっています。。
どなたか、原因がわかる方がいらっしゃいましたら、道しるべを頂けましたら幸いです。
回答3件
あなたの回答
tips
プレビュー