按ID从数据库中选择数据

时间:2013-05-02 10:20:29

标签: php mysql select html-table

我知道这个问题可能很简单,但由于我是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();
    ?>

3 个答案:

答案 0 :(得分:1)

更改此

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

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

将此查询与WHERE

一起使用
$user = $_SESSION['id'];
$sql = "SELECT id_user, id_ficha, avaria FROM fichas WHERE id_user = $user";

答案 1 :(得分:1)

您的查询中缺少WHERE子句

$user = $_SESSION['id'];
$sql = "SELECT id_user, id_ficha, avaria FROM fichas WHERE id_user = $user";

答案 2 :(得分: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 injection) - 例如将其解析为数字。