当我在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()可以防止对数据库的攻击!