2016-09-28 97 views
0

这是一件基本的事情,但我无法获得所需的数据。下面是代码,同时通过登录的用户ID(empid = 933)获取数据库中缺少的数据,它给了我所需的记录。但我想获取与已创建为$ empid的已登录ID用户的会话ID相同的数据。但我无法在下面提到的查询中传递此会话值。任何人都可以提供帮助,我将不胜感激...事先感谢你。如何在foreach循环中传递会话值php

<?php 
$hostname="localhost"; 
$username="root"; 
$password=""; 
$db = "usman"; 
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password); 

foreach($dbh->query('SELECT COUNT(*) FROM ams where empid= 933 GROUP BY leavetype HAVING leavetype = "Absent" 
') as $Absent) 
{ 
echo "<td>" . $Absent['COUNT(*)'] . "</td>"; 
echo "<br>"; 
} 
?> 
+0

那么什么是会话变量中调用的数据,比如'$ _SESSION ['empid']'也许。给我们一个线索,让我们的生活可以承受 – RiggsFolly

+0

''SELECT COUNT(*)FROM ams where empid ='。$ empid。' GROUP BY leavetype HAVING leavetype =“Absent”' –

+0

php处理名为'$ _SESSION'的全局变量中的会话数据。它是一个数组。如果您想查看该数组中的内容,可以通过print_r($ _ SESSION)来查看会话中包含的任何项目。然后你就可以知道哪个键与你的“empid”关联并存储在一个变量中,然后传递给你的查询。 –

回答

3
<?php 
// first you must start the session to gain access to the session object 
session_start(); 

$hostname="localhost"; 
$username="root"; 
$password=""; 
$db = "usman"; 

$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password); 

foreach($dbh->query("SELECT COUNT(*) as cnt 
        FROM ams 
        where empid= {$_SESSION['sess_user_id']} 
        GROUP BY leavetype 
        HAVING leavetype = 'Absent'") as $Absent) 
{ 
    echo "<td>" . $Absent['cnt'] . "</td>";  
    echo "<br>"; 
} 
?> 

它也更容易给COUNT(*)一个别名COUNT(*) as cnt那么你可以使用$Absent['cnt']作为列名

我也看不出有什么理由

GROUP BY leavetype 
HAVING leavetype = 'Absent 

,你是使用我认为是唯一的id来找到ams行

+0

它不能正常工作 –

+0

Warning:为这个错误提供的foreach()提供的无效参数 –

+0

复制你的代码,因为它是..但它不能正常工作 –

0

`

<?php 
try{ 
    $db = new PDO("dbtype:host=yourhost;dbname=yourdbname;charset=utf8","username","password"); 
    $empid = $_SESSION['sess_user_id']; 
    $query=$db->prepare("SELECT COUNT(*) as counts FROM ams where empid= ? GROUP BY leavetype HAVING leavetype = 'Absent'"); 
    $query->excute(array($empid)); 
    while($row=$query->fetch(PDO::FETCH_OBJ)) { 
    echo "<td>".$row->counts."</td>"; 
    echo "<br>"; 
    } 
}catch(PDOException $e){ 
echo "Error: ".$e; 
} 
?>