根据会话ID将MySQL表记录传递给变量

时间:2013-03-19 04:54:42

标签: php mysql session session-variables

我有以下PHP代码(可行),用于根据$ _SESSION clientid变量从我们的MySQL数据库中提取客户端电子邮件地址并将其存储在$ myemail上:

mysql_select_db($dn) or die(mysql_error());

$clientid = ($_SESSION['clientid']);

$result = mysql_query("SELECT emailaddress FROM clients WHERE clientid = '" . $clientid . "'");

while ($row = mysql_fetch_array($result)) {

$myemail = $row[0];

}

mysql_close($con);

但是想知道是否有更好的方法吗?

3 个答案:

答案 0 :(得分:3)

首先不要使用mysql_ *函数,因为它们已被弃用。最好使用PDO或mysqli。 关于你的问题,我会写

$clientId = $_SESSION['clientid'];

$res = mysql_fetch_object(mysql_query("SELECT emailaddress FROM clients WHERE clientid = '{$clientId}'"));

$email = $res->emailaddress;

为什么还需要while循环呢?虽然循环完全没有必要,因为我们正在获取单个记录。

答案 1 :(得分:2)

您的代码似乎很容易受到sql注入攻击。使用prepare statement或使用mysql_real_escape_string。这是代码......

mysql_select_db($dn) or die(mysql_error());

$clientid = ($_SESSION['clientid']);

$result = mysql_query("SELECT emailaddress FROM clients WHERE clientid = '" . $clientid . "'");
while ($row = mysql_fetch_array($result)) {
    $myemail = mysql_real_escape_string($row['emailaddress']);
}

mysql_close($con);

答案 2 :(得分:0)

<强>替换

$myemail = $row[0];

。通过

$myemail = $row['emailaddress'];