我有2个查询。 和2循环。
我的问题是当我调出值时。只有一个查询和一个循环是正确的。另一个循环显示重复值。
这就是我所拥有的:
$query1=mysql_query("SELECT * FROM table1");
$query2=mysql_query("SELECT * FROM table2");
while($row1=mysql_fetch_array($query1)){
while($row2=mysql_fetch_array($query2)){
echo $row1['nameofattribute'] ;
echo $row2['nameofattribute'] ;
}
}
查询1的输出是正确的。但查询2的输出是重复值。 例如 : query 1 = $ row1 = 2 $ row1 = 3 $ row1 = 4 查询2 = $ row2 = 3 $ row2 = 3 $ row2 = 3
相反它应该是 query 1 = $ row1 = 2 $ row1 = 3 $ row1 = 4 查询2 = $ row2 = 1 $ row2 = 2 $ row2 = 3在上面是我对代码的简单翻译。这是我的真实代码:
$query1 = mysql_query("SELECT remarks FROM passed_deliverable WHERE user_id=$uid && deliverable_category_id=4");
$query2=mysql_query("SELECT
deliverable_id, deliverable_title, deliverable_desc, adviser_id ,deliverable_category_id
FROM deliverable d
WHERE d.deliverable_category_id=4
&& EXISTS (
SELECT 'X'
FROM passed_deliverable pd
WHERE pd.deliverable_id = d.deliverable_id && user_id='".$_GET['edit']."' && adviser_id='".$_SESSION['user_id']."' ) ");
while($x=mysql_fetch_array($query1)){
while($deliverable=mysql_fetch_assoc($query2)){
echo "
{$deliverable['deliverable_desc']}
{$x['remarks']}
";
答案 0 :(得分:1)
假设您只想将两个表的结果行按其显示顺序组合(忽略超出其他表的结果):
$a1 = array();
$a2 = array();
while($x=mysql_fetch_array($query1)) {
$a1[] = $x['remarks'];
}
while($deliverable=mysql_fetch_assoc($query2)) {
$a2[] = $deliverable['deliverable_desc'];
}
for($i=0; $i < count($a1) and $i < count($a2); $i++) {
echo "\n\n".$a2[$i]."\n".$a1[$i];
}
答案 1 :(得分:1)
试试这个: 先生的其他答案或循环。 hellcode 它表明您也可以使用数组值而不是仅使用数组
$a1 = 0[];
$a2 = 0[];
while($x=mysql_fetch_array($query1)) {
$a1[] = $x['remarks'];
}
while($deliverable=mysql_fetch_assoc($query2)) {
$a2[] = $deliverable['deliverable_desc'];
}
for($i=0; $i < count($a1) and $i < count($a2); $i++) {
echo "\n\n".$a2[$i]."\n".$a1[$i];
}
答案 2 :(得分:0)
Deprecation of mysql_ functions。请避免使用mysql_函数。无论如何,你的查询似乎不寻常。因为我们在您的查询中没有看到任何WHERE
子句。这意味着它将返回重复值。每行Table1
将检查Table2
的所有行。