-1

我知道这个问题可能很简单,但由于我是 PHP 和 MySQL 的新手,所以我不知道如何解决这个问题。

我想从表中检索数据,但只针对那个用户。这是一个检查他们的设备是否固定的系统,我只想让客户看到他自己的设备,而不是其他人。所以我认为这是通过比较每个表中的 id 以及是否相等来完成的。

你知道我该怎么做吗?这是我到目前为止的代码:

    <?php
// A sessão precisa ser iniciada em cada página diferente
if (!isset($_SESSION)) session_start();
?>
<head>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    <link href="favicon.ico" rel="shortcut icon">
<title>Verificar estado</title></head>
<body>
<?php
    //Tentativa de estabelecer uma ligação à BD
    $connection = new mysqli('****', '****', '******', '****');

    //Verificar se a ligação foi estabelecida com sucesso
    if (mysqli_connect_errno() ) {
        echo "</h2>Erro no acesso à base de dados.</h2>" . mysqli_connect_error(); 
        exit();
        } 
    $user = $_SESSION['id'];
    $sql = "SELECT id_user, id_ficha, avaria FROM fichas";

    //Executar a Query!
    $result = $connection->query($sql); 
    echo "<div id='listanomes'>User ID - ID Ficha - Avaria</div>";
    ?>
    <div id="lista">
    <div class="consultar">
    <?php
    while ($userproduto = $result-> fetch_object() ) {
        echo '<table border="1">';
        echo "<tr>";
            echo "<td>" . $userproduto->id_user . "</td>";
            echo "<td>" . $userproduto->id_ficha . "</td>";
            echo "<td>" . $userproduto->avaria . "</td>";
            echo "</tr>";
        echo "</table>";
    } 
        echo '</div>';
        echo '</div>';
    //Termina o script

        echo '<div class="foot">';
        echo '<p>Copyright © 2013 - Todos os direitos reservados - <a href="mailto:numica@numica.pt">Númica</a></p>';
        echo '</div>';
        echo '</body>';
        echo '</html>';
exit();
    ?>
4

3 回答 3

1

change this

if (!isset($_SESSION)) session_start();

to

session_start();
if (isset($_SESSION['id'])) 

And use this query with WHERE

$user = $_SESSION['id'];
$sql = "SELECT id_user, id_ficha, avaria FROM fichas WHERE id_user = $user";
于 2013-05-02T10:22:32.313 回答
1

You are missing WHERE clause in your query

$user = $_SESSION['id'];
$sql = "SELECT id_user, id_ficha, avaria FROM fichas WHERE id_user = $user";
于 2013-05-02T10:23:02.620 回答
0

如果我理解正确并且fichas表是用户和设备之间的关联表,那么您的查询应该如下所示

$sql = "SELECT id_user, id_ficha, avaria FROM fichas f 
        LEFT JOIN equipment_table eq ON eq.id_ficha = f.id_ficha
        WHERE id_user = " . $id.";

此查询将返回给定用户的所有设备,您还将从设备表中获取值。

不要忘记清理id值(避免SQL 注入) - 例如将其解析为数字。

于 2013-05-02T10:26:17.083 回答