使用Session代码代替PHP SELECT WHERE函数

时间:2013-05-19 00:19:35

标签: php mysql

由于我的问题可能不清楚:

简而言之,我希望让以下代码更短和/或更快

我有登录系统启动会话并运行直到你退出

我还有一个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']; ?>在某种程度上,我可以使用上面的代码执行相同类型的操作吗?只是为了缩短它并利用会话???提前谢谢。

1 个答案:

答案 0 :(得分: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>";