根据登录,用户只能查看其特定行

时间:2018-02-07 00:46:14

标签: php mysql sql

我有两张桌子:

table pengguna:                                     table perak:
pkg   | username  | password                        pkg   | kodsk | namask 
ayer  | 123       | 123                             ayer  |  .... | ....
bagan | admin     | admin                           bagan |  .... | ....

当用户输入正确的用户名和密码时,用户只能根据相同的pkg查看表perak上的特定行。我的查询有什么问题?

<?php

session_start();
include("connections.php");

try{

$data = "SELECT username,password,pkg,kodsk,namask,tahun,makmal,catatan,murid,netbook FROM pengguna,perak WHERE pengguna.pkg = perak.pkg AND pengguna.username = '$_SESSION[username]'";

$stmt = $connect->prepare($data);

$rows=array();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$rows[]=$row;

echo '<table width="70%" border="5" cellpading="1" cellspacing="1">
            <tr>

                 <th>PKG</th>
                 <th>KOD SEKOLAH</th>
                 <th>NAMA SEKOLAH</th>
                 <th>TAHUN OPERASI</th>
                 <th>MAKMAL</th>
                 <th>CATATAN</th>
                 <th>BIL. MURID</th>
                 <th>AGIHAN NETBOOK</th> 
            </tr>';

    foreach($rows as $row)
    {
        echo '<tr>
                <td>'.$row["pkg"].'</td>
                <td>'.$row["kodsk"].'</td>
                <td>'.$row["namask"].'</td>
                <td>'.$row["tahun"].'</td>
                <td>'.$row["makmal"].'</td>
                <td>'.$row["catatan"].'</td>
                <td>'.$row["murid"].'</td>
                <td>'.$row["netbook"].'</td>
              </tr>';
    }
}

catch(PDOException $error){

$error->getMessage();
}
?>

有人可以教我如何查询,以便用户只能在表perak上查看他们的信息,而不会显示其他pkg信息。

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT * FROM perak INNER JOIN pengguna USING (pkg)
WHERE pengguna.username = '$_SESSION[username]'

您的查询

SELECT username,password,pkg,kodsk,namask,tahun,makmal,catatan,murid,netbook FROM pengguna,perak WHERE pengguna.pkg = perak.pkg AND pengguna.username = '$_SESSION[username]'

笛卡尔产品会给你一个非常大的表格,而不是推荐