sql命令中的PHP会话变量在执行时变为null

时间:2017-02-03 01:29:57

标签: php

好的,所以我有一个在客户购买数字代码后执行的功能。该函数非常简单,在我认为可以修复它而不是使用mysqli之后使用pdo。一切正常,但用户名变量没有被放入表中,即使我认为我可以回应它并在其他sql命令中使用它就好了,但由于某种原因不是这个特定的行。

以下是代码:

function redeemToken($amount = 1){
    $db_tokens = new PDO('mysql:host=IP;dbname=DB', "U", "P");
    $qOne = $db_tokens->query("SELECT * FROM tokens WHERE used='0' LIMIT $amount;"); //selects the first unused token
    $dataToken = $qOne->fetch();
    $token = $dataToken["token"];
    $qTwo = $db_tokens->query("UPDATE tokens SET used='1', usedby='".$php_session_username."', date_used=NOW() WHERE token='".$token."';"); //uses the token for the current logged in user
    $db_kvs = null;
}

正如我所说,除了用户名值($ php_session_username)没有添加到表中之外,所有内容都执行得很好。但当echo'd out清楚地显示登录的用户名以及我在该页面上运行的任何其他sql命令时;它工作正常。

非常感谢任何帮助,所以提前感谢。

1 个答案:

答案 0 :(得分:2)

我不确定,但我猜问题是$ php_session_username不是函数的局部变量,函数也没有在其参数中获取值。尝试这样的事情。

function redeemToken($amount = 1,$php_session_username)
{
//function body
}
($amount = 1,$php_session_username);