0

私はこれがなぜ起こっているのかを理解しようとしてきました。SQLデータベースにローカルに接続していて、一部のデータを保存できますが、何らかの理由で、この1つの列が正しく保存されません。私のSQLデータベースには3つの列があり、最初の列は私の主キーです。最初の2つはvarchar(50)で、最後の2つは日時列です。

値を1列目と3列目に正しくプッシュできますが、何らかの理由で、データをuname列に正しくプッシュできません。$ sessionTokenは乱数で終わり、$ userは「John」のようなものである必要がありますが、リソースID#5になり、$timeは正しくタイムスタンプになります。

どんな助けでもいただければ幸いです!

function freshLoginSession($user) {

    try {
        $mssql = new PDO('sqlsrv:SERVERNAME;database=DATABASENAME','sa','1234');
        $sessionToken = md5(uniqid(rand(), TRUE));
        $_SESSION['loggedInToken'] = $sessionToken;
        $time = date("Y-m-d H:i:s");
        $query = "INSERT INTO dbo.SESSION_TABLE (SESSION_KEY, UNAME, LOGIN_TIME) VALUES (:sessionToken, :user, :time)";

        $stmt = $mssql->prepare($query);
        $stmt->execute(array(':sessionToken' => $sessionToken, ':user' => $user, ':time' => $time));
        $stmt = null;
        $mssql = null;
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
4

1 に答える 1

0

あなたの質問はPDOとは何の関係もありません。それは明らかに、デバッグの欠如を特徴とするタイプミスのような質問だからです。

このような場合は、挿入する前に少なくとも値をエコーアウトしてください。これは非常に基本的なことですが、プログラミングの最大の原則の1つです。プログラマーはすべての値をチェックしてから、間違った値を設定された場所まで追跡する必要があります。
この手法はデバッグと呼ばれ、最もよく使用されるプログラミングツールです。

また、これらのtry..catchものをコードから削除してください。それらは役に立たず、安全ではありません。

于 2013-03-16T07:32:31.820 に答える