需要帮助从MySQL中检索一些数据


Need help retrieving some data from MySQL

我有一个MySQL数据库,目前我正在使用3个表。一个包含电子邮件,一个包含类别,还有一个连接表,该表只有类别ID和与每个类别关联的电子邮件的ID列表,这些ID已被PHP内爆,并用"-"分隔
例如:2-5-4等等
我正在尝试输出电子邮件列表。首先,我通过邮件从另一个页面获取类别电子邮件,然后用它从连接表中获取电子邮件字符串,并在分解列表后尝试从电子邮件表中打印出电子邮件。但是我犯了一个错误。能帮忙吗?

<?php
mysql_connect("localhost","root","") or die("problema na conexao");
mysql_select_db("trabalho1");
$idcategoria = $_GET["id"]; 
$querye = "SELECT ID,categoria FROM categoria WHERE ID = '".$idcategoria."'";   
$resultse = mysql_query($querye) or die(mysql_error());                 
    while ($rowe = mysql_fetch_array($resultse))    {
    $categorianome = $rowe['categoria'];
                                                    }
                        echo"<center>";
                    echo "Nome da categoria: ".$categorianome."";
                    echo "<table border='2'>'n";
                    echo"<form>";                           
                    echo "<tr align='center'><td>Data de Criação</td><td>Nome</td><td>Email</td><td>Data da ultima Actualização</td></tr>";                             
$queryq = "SELECT * FROM emailcategoria WHERE categoria = '".$idcategoria."'";  
$resultsq = mysql_query($queryq) or die(mysql_error());                 
    while ($rowq = mysql_fetch_array($resultsq))    {

        $novoarray = explode(' - ',$rowq['email']);
        $numero = Count($novoarray);
        for($cont=0;$cont<$numero;$cont++){
        $query = "SELECT * FROM email WHERE id = '".$novoarray[$cont]."'";  
        $results = mysql_query($query) or die(mysql_error());                   
            while ($row = mysql_fetch_array($results))  {

                    while ($row = mysql_fetch_array($results)) {                            
                                    echo "<tr align='center'>'n";
                                    echo "<td><b></b>".$row['datahora']. "'n</td>";                                             
                                    echo "<td><b></b>".$row['nome']. "'n</td>";                                 
                                    echo "<td><b></b>".$row['email']. "'n</td>";                                    
                                    echo "<td><b></b>".$row['dataactual']. "'n</td></tr>";                                                                                                                                                                      
                                                        }                       
                                                    }
                                                                }
}                                                       
echo "</form>'n";
                        echo "</table>'n";
                        echo"</center>";                                                                                                                    
?>

现在没有错误行。只是没有结果显示
我有一个id为15的表类别,有一个类别为同一id的连接表,有4封电子邮件,它们之间用"-"内爆。

您在这里创建了您的:

for($cont=0;$cont<$numero;$cont++){

但是在这里你总是使用$numero:

$query = "SELECT * FROM email WHERE id = '".$novoarray[$numero]."'";
                                                         ^

你确定应该是这样而不是$cont在里面吗?(for循环更改的实际变量)

似乎下面的行:

  $query = "SELECT * FROM email WHERE id = '".$novoarray[$numero]."'"; 

应该是:

    $query = "SELECT * FROM email WHERE id = '".$novoarray[$cont]."'"; 

您正在通过$numero = Count($novoarray);运行一个循环。所以看来你们需要改变这条线。

另一件事:

你在这里可以买到两次相同的东西:

while ($row = mysql_fetch_array($results))  {
                    echo "<tr align='center'><td>Data de Criação</td><td>Nome</td><td>Email</td><td>Data da ultima Actualização</td></tr>";
                    while ($row = mysql_fetch_array($results)) {  

这毫无意义。

计数从0开始,因此:

$query = "SELECT * FROM email WHERE id = '".$novoarray[$numero]."'";

需要更改为:

$query = "SELECT * FROM email WHERE id = '".$novoarray[$numero-1]."'";

尝试使用这个:

<?php
mysql_connect("localhost","root","") or die("problema na conexao");
mysql_select_db("trabalho1");
$idcategoria = $_GET["id"];
$querye = "SELECT ID,categoria FROM categoria WHERE ID = '".$idcategoria."'";
$resultse = mysql_query($querye) or die(mysql_error());
while ($rowe = mysql_fetch_array($resultse))    {
    $categorianome = $rowe['categoria'];
}
echo"<center>";
echo "Nome da categoria: ".$categorianome."";
echo "<table border='2'>'n";
echo"<form>";
echo "<tr align='center'><td>Data de Criação</td><td>Nome</td><td>Email</td><td>Data da ultima Actualização</td></tr>";
$queryq = "SELECT * FROM emailcategoria WHERE categoria = '".$idcategoria."'";
$resultsq = mysql_query($queryq) or die(mysql_error());
while ($rowq = mysql_fetch_array($resultsq))    {

    $novoarray = explode(' - ',$rowq['email']);
    $numero = Count($novoarray);
    for($cont=0;$cont<$numero;$cont++){
        $query = "SELECT * FROM email WHERE id = '".$novoarray[$cont]."'";
        $results = mysql_query($query) or die(mysql_error());

            while ($row = mysql_fetch_array($results)) {
                echo "<tr align='center'>'n";
                echo "<td><b></b>".$row['datahora']. "'n</td>";
                echo "<td><b></b>".$row['nome']. "'n</td>";
                echo "<td><b></b>".$row['email']. "'n</td>";
                echo "<td><b></b>".$row['dataactual']. "'n</td></tr>";
            }
    }
}
echo "</form>'n";
echo "</table>'n";
echo"</center>";
?>

您使用

while ($rowq = mysql_fetch_array($resultsq))    {

两次。。

$novoarray=爆炸('-',$rowq['email']);$numero=计数($novoarray);

正在尝试对Count做什么($novolarray);