2

$_SESSION clientid 変数に基づいて MySQL DB からクライアントの電子メール アドレスを取得し、それを $myemail に格納するための次の PHP コード (動作) があります。

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;

もう1つ、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 に答える