会话名称和更新有问题


having issues with session name and updating

当我在SQL语句中使用会话名称时,它不会返回任何结果,但当我用真实用户名替换它时,它会返回一个结果。

$emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '{$_SESSION['username']}'")or die(mysql_error());
$results = (mysql_fetch_assoc($emails)) or die(mysql_error());
$email= $results['email'];
echo "$email";
die();  

而且更新也不起作用。

if(array_key_exists('item', $_POST)){
    $items = $_POST['item'];
    //Loop through $_POST items, updating the database for each item
    foreach ($items as $item) { 
        $Pquantity = intval($item[0]); 
        $Pidno = intval($item[1]); 
        $queryreg = mysql_query("
            UPDATE repplac
                 SET Pquantity = {$Pquantity}
                 WHERE
                       Pidno = {$Pidno}
                 AND
                       Uname = '{$_SESSION['username']}'
        "); 
$emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '".$_SESSION['username']."'")or die(mysql_error());

存储在SESSION[用户名]中的字符串是否与MYSQL Select语句中的字符串相同。如果是,请尝试使用以下SQL:

$emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '".$_SESSION['username']."')or die(mysql_error());

这只是一个防止SQL注入漏洞的提示:永远不要将通过get或POST获得的数据插入数据库!对字符串使用intval()和mysql_real_eescape_string()可以防止对数据库的攻击!