添加会话变量到MySQL查询中使用PHP

添加会话变量到MySQL查询中使用PHP

问题描述:

我试着去两个变量传递到一个MySQL查询,并通过会话变量时,在低于其卡住:添加会话变量到MySQL查询中使用PHP

$check = mysql_query("SELECT * 
         FROM Clients 
         WHERE Username = '$new_username' 
         AND Username != '$_SESSION['Username']'") or die(mysql_error()); 

任何提示吗?提前致谢。

+0

试试这个` “SELECT * FROM客户其中username = '$ new_username' 和用户名!= '”。$ _ SESSION [ '用户名'。 “'”` – 2011-02-11 12:24:43

+2

“卡住” 是不是一个真正的错误信息。这产生了什么输出? – 2011-02-11 12:27:00

+0

干杯Shakti多数民众赞成在工作:) – Matt 2011-02-11 12:31:21

这是因为您的单引号'$_SESSION['Username']'已被会话中的值终止。将其更改为'" . $_SESSION['Username'] . "'将解决该问题。

这是可行的,但这是非常,非常糟糕

$check = mysql_query(" 
    SELECT * 
    FROM Clients 
    WHERE Username = '$new_username' 
    AND Username != '{$_SESSION['Username']}' 
") or die(mysql_error()); 

这也应当制定并建议这样做的方式:

$check = mysql_query(" 
    SELECT * 
    FROM Clients 
    WHERE Username = '" . mysql_real_escape_string($new_username) . "' 
    AND Username <> '" . mysql_real_escape_string($_SESSION['Username']) . "' 
") or die(mysql_error()); 

当您在为字符串嵌入阵列,你必须通过连接它们或使用大括号将它们分开。

$string = "text text {$array['key']} text"; 

$string = "text text " . $array['key'] . " text"; 

为什么没有人说的 “文字文本$阵列[关键]文本” 语法?

SELECT * 
FROM Clients 
WHERE Username = '$new_username' 
AND Username != '$_SESSION[Username]'