0

我一直在试图弄清楚为什么会这样。我在本地连接到我的 SQL 数据库并能够存储一些数据,但由于某种原因,这一列无法正确存储。我的 SQL 数据库有 3 列,第一列是我的主键。前两个是 varchar(50),最后一个是日期时间列。

我可以将值正确推送到第一列和第三列,但由于某种原因,它不会让我正确地将数据推送到 uname 列。$sessionToken 以随机数结尾,$user 应该类似于“John”,但最终是 Resource 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 无关,因为它显然是一个类似错字的问题,只是缺乏调试。

在这种情况下,请至少在插入之前回显您的值。这是一件非常基本的事情,但却是最伟大的编程原则之一。程序员必须检查每个值,然后将错误的值跟踪到设置的位置。
这种技术被称为调试并且是最常用的编程工具。

try..catch另外,请从您的代码中删除这些内容。它们无用且不安全。

于 2013-03-16T07:32:31.820 回答