0

First post here - I've been learning php and mysql for a month or so now.

I'm trying to post the session 'MM_Username' into log notes. so it reads 'archived by username'

I thought that if I set the lognote value to 'archived by " . $_SESSION['MM_Username'] . "' I would get the result i was after. Apparently not.

What am I doing wrong? My code is below.

Thanks

    if ((isset($_GET['divisionid'])) && ($_GET['divisionid'] != "")) {


  $logarchiveSQL = sprintf("INSERT INTO log (logaction, logdivisionid, lognotes) VALUES ('Division Archived', %s, 'archived by " . $_SESSION['MM_Username'] . "')",
                       GetSQLValueString($_GET['divisionid'], "int"));

  mysql_select_db($database_connect, $connect);
  $Result2 = mysql_query($logarchiveSQL, $connect) or die(mysql_error());


  $updateGoTo = "../divisions.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));}
4

4 に答える 4

1

それをsession_start();に置くことを覚えていますか?セッションにアクセスする前に?

于 2012-05-20T13:14:15.533 に答える
0

あなたがエラーを提供していないので、私はコードをチェックしましたが、コーディングに関して深刻なものは何も見つかりませんでした。ただし、次のようないくつかの小さな提案:

<?Php
if ((isset($_GET['divisionid'])) && ($_GET['divisionid'] != "")) {


    $logarchiveSQL = sprintf("INSERT INTO log (logaction, logdivisionid, lognotes) VALUES ('Division Archived', %d, 'archived by %s')",
        GetSQLValueString($_GET['divisionid'], "int"), 
        $_SESSION['MM_Username']);

    mysql_select_db($database_connect, $connect);
    $Result2 = mysql_query($logarchiveSQL, $connect) or die(mysql_error());


    $updateGoTo = "../divisions.php";
    if (isset($_SERVER['QUERY_STRING'])) {
        $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
        $updateGoTo .= $_SERVER['QUERY_STRING'];
    }
    header(sprintf("Location: %s", $updateGoTo));
    exit;
}
?>
  • INT値とFLOAT値には、それぞれ%dまたは%fを使用する必要があります。
  • sprintfを使用しているので、別の%sを使用してSESSION変数を配置してみませんか?
  • プログラムロジックが別のページに転送された後、このページから何も実行されないようにするには、各header()呼び出しの後にEXITを配置する必要があります。
  • PHPでは大文字と小文字が区別されるため、ここで使用されているSESSION変数の大文字と小文字を確認することをお勧めします。

最終的にあなたが直面しているエラーに感謝します!

于 2012-05-20T12:02:06.310 に答える
0

どのような結果が得られていますか?クエリは実際に実行されていますか?ステートメントが二重引用符で囲まれている場合""{}で変数を参照してみてください

   $logarchiveSQL = sprintf("INSERT INTO log (logaction, logdivisionid, lognotes) VALUES ('Division Archived', %s, 'archived by {$_SESSION[MM_Username]} ')",
                       GetSQLValueString($_GET['divisionid'], "int"));
于 2012-05-20T11:49:00.083 に答える
0

解決しました!

みんな助けてくれてありがとう!

session_startを宣言していませんでしたが、セキュアインクルードファイルで定義されていることを忘れていました。

また、部門のレコードセットを作成する必要がありました

    session_start();

$colname_division = "-1";
if ((isset($_GET['divisionid'])) && ($_GET['divisionid'] != "")) {
      $colname_division = $_GET['divisionid'];

mysql_select_db($database_connect, $connect);
$query_division = sprintf("SELECT * FROM division WHERE divisionid = %s", GetSQLValueString($colname_division, "int"));
$division = mysql_query($query_division, $connect) or die(mysql_error());
$row_division = mysql_fetch_assoc($division);
$totalRows_division = mysql_num_rows($division);


// ADD LOG DIVISION REINSTATED
    $logarchiveSQL = sprintf("INSERT INTO log (logaction, logdivisionid, lognotes) VALUES ('Reinstated', %d, '" . $row_division['division'] . " reinstated by " . $_SESSION['MM_Username'] . "')",
                    GetSQLValueString($_GET['divisionid'], "int")); 

    mysql_select_db($database_connect, $connect);
    $Result1 = mysql_query($logarchiveSQL, $connect) or die(mysql_error());

// MESSAGE USERS DIVISION REINSTATED
    $messageinsertSQL = sprintf("INSERT INTO messages (message) VALUES ('The division " . $row_division['division'] . " has been reinstated by " . $_SESSION['MM_Username'] . " you may now select this division')",
                    GetSQLValueString($_GET['divisionid'], "int")); 

    mysql_select_db($database_connect, $connect);
    $Result4 = mysql_query($messageinsertSQL, $connect) or die(mysql_error());

// UPDATE DIVISION TO REINSTATED
    $divisionarchiveSQL = sprintf("UPDATE division SET divisionarchive=0 WHERE divisionid=%s",
                    GetSQLValueString($_GET['divisionid'], "int"));

    mysql_select_db($database_connect, $connect);
    $Result3 = mysql_query($divisionarchiveSQL, $connect) or die(mysql_error());

// REDIRECT
    $updateGoTo = "../divisions.php";
        if (isset($_SERVER['QUERY_STRING'])) {
            $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
            $updateGoTo .= $_SERVER['QUERY_STRING'];
        }
    header(sprintf("Location: %s", $updateGoTo));

    mysql_free_result($division);
    exit;
于 2012-05-20T23:07:33.820 に答える