我有一个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);