1

$_SESSION変数を使用して、ユーザーのログイン資格情報が保存され、データベースからの関連データを画面に表示するために使用されるログインプロセスを構築しようとしています(つまり、彼らが働いている学校のデータのみが表示されます) )。

   <?php    
session_start();

if(!isset($_SESSION['Initials'], $_SESSION['Surname']))
{

 $host = "xxx";
 $username = "xxx";
 $password = "xxx";
 $database_name = "xxx";
 $table_name = "xxx";

 mysql_connect($host, $username, $password) OR die("Can't  
 connect");
 mysql_select_db($database_name) OR die("Can't connect to 
 Database");

 $query = "SELECT Class FROM $table_name WHERE Initials = '". 
 $_SESSION['Initials']."' AND staff LIKE '%".$_SESSION['Surname']."'";
 $result = mysql_query($query);
 $class = mysql_fetch_array($result);
 $count = mysql_num_rows($result);

 if($count === NULL)
 {
  echo "ERROR";
 }
  else
  {
  $_SESSION['Class'] = $result;
  echo "Class added to sessions";
  }
}
?>

クエリがセッション変数を認識できないという最初の問題は、if ステートメントに正しい括弧を追加することで簡単に解決できました。ここで発生した次の問題は、クエリは成功するはずですが ($count が FALSE または NULL の場合、「エラー」というエラー メッセージは表示されません)、結果の配列を新しいセッションに作成していないことです。セッション配列を新しいページに印刷すると、「イニシャル」と「姓」のセッションのみが引き継がれるためです。

その配列 (複数の結果をスローすることがバインドされているため) を新しいセッションにするために、クエリまたはクエリ後のプロセスに何を変更する必要がありますか?

私の最初の問題への回答に感謝します!

4

2 に答える 2

1
if(!isset($_SESSION['Initials'], $_SESSION['Surname'])) {
// code
}

{}括弧が必要です

if(!isset($_SESSION['イニシャル'], $_SESSION['姓']))

$host = "xxxxx"; $username = "xxxxx"; $password = "xxxxx";

if(!isset($_SESSION['Initials'], $_SESSION['Surname'])) {

$host = "xxxxx";
}
$username = "xxxxx";
$password = "xxxxx";
于 2013-10-10T10:34:03.420 に答える
0

私は答えを見つけました - セッション変数の 1 つを適切な配列として扱っていなかったため、適切にロードされないことが判明しました。将来同様の問題を抱えている人が参照ポイントとして使用できるように、以下にスクリプトを追加しました。

<?php

 session_start();


 // Server Details //
 $host = "---";
 $username = "---";
 $password = "---";
 $database_name = "---";
 $table_name = "---";


 // Connect Command //
 mysql_connect($host, $username, $password) OR die("Can't  
 connect");
 mysql_select_db($database_name) OR die("Can't connect to 
 Database");


 // Query to call up the unique school name //
 $query_school = mysql_query("SELECT DISTINCT School FROM $table_name 
 WHERE Initials = '".$_SESSION['---']."'
 AND staff LIKE '%".$_SESSION['---']."'") or die( mysql_error());
 $result_school = mysql_result($query_school, 0);


 // Query to call up the unique centre no //
 $query_centreno = mysql_query("SELECT DISTINCT CentreNo FROM 
 $table_name WHERE Initials = '".$_SESSION['---']."'
 AND staff LIKE '%".$_SESSION['---']."'") or die( mysql_error());
 $result_centreno = mysql_result($query_centreno, 0);


 // The newly created sessions for school info //
 $_SESSION['---'] = $result_school;
 $_SESSION['---'] = $result_centreno;


 // Query to call up the array of classes //
 $query_class = mysql_query("SELECT Class FROM $table_name WHERE 
 Initials = '".$_SESSION['---']."'
 AND staff LIKE '%".$_SESSION['---']."'") or die( mysql_error());
 $query_class__array = array();
 while($row = mysql_fetch_assoc($query_class))
 $query_class_array[] = $row;

 $_SESSION['---'] = $query_class_array;

?>
于 2013-10-11T10:34:11.650 に答える