Php 同时循环复制结果

Php 同时循环复制结果,php,mysql,while-loop,Php,Mysql,While Loop,我在表中有2行,当我在php中执行while循环获取它时,它会将结果复制5次。正如您所见,它创建了一个表,只有两行,复制结果似乎很奇怪。。我甚至在StackOverflow上找到了一个答案,上面说在查询中添加“DISTINCT”,但它对我的查询不起作用 <?php // A sessão precisa ser iniciada em cada página diferente $id=null; session_start(); if (isset($_SESSION['Usua

我在表中有2行,当我在php中执行while循环获取它时,它会将结果复制5次。正如您所见,它创建了一个表,只有两行,复制结果似乎很奇怪。。我甚至在StackOverflow上找到了一个答案,上面说在查询中添加“DISTINCT”,但它对我的查询不起作用

    <?php
// A sessão precisa ser iniciada em cada página diferente
$id=null;
session_start();
if (isset($_SESSION['UsuarioID']))
{
    $id = $_SESSION['UsuarioID'];
}
?>
    <head>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    <link rel="shortcut icon" href="http://www.iconj.com/ico/7/5/75jqn04zq9.ico" type="image/x-icon" />
    <title>Verificar estado</title></head>
    <body>
    </div><?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();
        } 


    $sql = "SELECT DISTINCT id_user, id_ficha, avaria, observacoes, estado, id FROM fichas, usuarios WHERE id_user = " . $id.";";
    //Executar a Query! 
    $result = $connection->query($sql);
    echo "<div id='listanomes'>User ID - ID Ficha - Avaria</div>";
    ?>
    <div id="lista">
    <div class="estados">
    <?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 "<td>" . $userproduto->observacoes . "</td>";
            echo "<td>" . $userproduto->estado . "</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();
    ?>

埃斯塔多酒店

您必须添加join语句来连接两个表,否则SQL将执行笛卡尔乘积

SELECT DISTINCT id_user, id_ficha, avaria, observacoes, estado, id FROM fichas, usuarios WHERE id_user = $id AND fichas.id = usarios.id_fichas

当您从命令行运行查询时,您得到了多少结果/您正在查询两个表
fichas
usarios
。每个表中的行数是多少?5在表“usuarios”中,我从查询中删除了一些字段,现在可以使用了。抱歉给你添麻烦了!尝试了您的解决方案,但它不断重复:我这样做:“从fichas WHERE id_user=“”中选择不同的avaria、observacoes、estado$id.“;”;现在它可以工作了:Dit可以工作,因为您删除了usarios表中的一些行,但是如果您在该表中放置了多行,则会出现相同的问题…您必须将usarios唯一键与fichas表中的相关键链接。不可以,因为在我的新查询中,我没有导入表“usarios”,并且表“fichas”具有用户id和“usuarios”只是导入了“id”,它们是一样的,真的很管用