我知道这个问题可能很简单,但由于我是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();
?>
答案 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) - 例如将其解析为数字。