0

私の質問は不明確かもしれないので:

要するに、次のコードを短くおよび/または高速にしたいと考えています

セッションを開始してログアウトするまで実行するログインシステムがあります

また、支払われていない請求書の数をカウントする SELECT WHERE スクリプトも用意しています。

    <?php
$con=mysqli_connect("REMOVED FOR SECURITY");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT COUNT(*) FROM mypanda_invoices
WHERE is_paid='0'");

while($row = mysqli_fetch_array($result))
  {
  echo "<span class='badge badge-important'>" . $row['COUNT(*)'] . "</span>";
  }
?>

今、私が持っているユーザーのユーザー名を取得するために、<?php session_start(); echo $_SESSION['username']; ?>上記のコードでこれと同じタイプのことを行うことができる方法はありますか? 短くしてセッションを活用するためだけに??? 前もって感謝します。

4

1 に答える 1

2

セッションが開始されている限り、請求書カウントもセッションに入れることができます。

コードをきれいにしたい場合は、結果セットを確認してから使用することをお勧めしますfetch_object()->inv_count(または、PHP 5.4 では使用できるfetch_array(MYSQLI_NUM)[0]と思います)。

システムの重要な部分、たとえばデータベース接続でエラーが発生した場合はdie、単にエコーして続行するのではなく、適切に処理する必要があります (以下は適切ではありませんが、仕事は完了します)。後で致命的なエラーが発生します。

また、オブジェクトを使用すると、物事が少しきれいになります。

<?php
$con = new mysqli("REMOVED FOR SECURITY");

// Check connection
if(mysqli_connect_errno()) die("Failed to connect to MySQL: " . mysqli_connect_error());

$result = $con->query("SELECT COUNT(*) AS inv_count FROM mypanda_invoices
WHERE is_paid='0'");
if($result && $result->num_rows) $_SESSION['inv_count'] = $con->fetch_object()->inv_count;
    else $_SESSION['inv_count'] = 0;

echo "<span class='badge badge-important'>" . $_SESSION['inv_count'] . "</span>";
于 2013-05-19T00:36:05.963 に答える