2

我有以下 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);

但是想知道是否有更好的方法来做到这一点?

4

3 回答 3

3

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

$clientId = $_SESSION['clientid'];

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

$email = $res->emailaddress;

还有一件事为什么你需要while循环?While 循环根本没有必要,因为我们正在获取单个记录。

于 2013-03-19T04:59:39.740 回答
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);
于 2013-03-19T04:58:32.747 回答
0

代替

$myemail = $row[0];

$myemail = $row['emailaddress'];
于 2013-03-19T04:56:35.780 回答