我有以下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);
但是想知道是否有更好的方法吗?
答案 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'];