PHP将查询数组与var进行比较,并将其签入表中

PHP将查询数组与var进行比较,并将其签入表中,php,mysql,Php,Mysql,我有三张桌子 +----+--------+----+ +----+--------+----+ +----+--------+ + id + name +perc+ + id + name +perc+ + id + name + +----+--------+----+ +----+--------+----+ +----+--------+ + 12 + banana +100 + + 2 + mario +100 + + 1 + apple + + 5

我有三张桌子

+----+--------+----+  +----+--------+----+  +----+--------+
+ id +  name  +perc+  + id +  name  +perc+  + id +  name  +
+----+--------+----+  +----+--------+----+  +----+--------+
+ 12 + banana +100 +  + 2  + mario  +100 +  + 1  + apple  +
+ 5  + apple  + 50 +  + 5  + luigi  +100 +  + 2  + banana +
+ 7  + luigi  + 30 +  + 99 + apple  + 20 +  + 3  + input  +
+----+--------+----+  + 14 + input  + 10 +  + 4  + luigi  +
                      +----+--------+----+  + 5  + mario  +
                                            +----+--------+
第三个表是从第一个表和第二个表创建的。在我的HTML文件中有一个表,它从表3中获取所有“名称”。 在第一列中有所有的table3.name,在第二、第三列中,我需要检查变量是否为100,如下所示:[V=检查但不是100,X=不检查,G=用100检查]

+--------+------+------+
+ name   + tab1 + tab2 +
+--------+------+------+
+ apple  +   V  +   V  +
+ banana +   G  +   X  +
+ input  +   X  +   V  +
+ luigi  +   V  +   G  +
+ mario  +   X  +   G  +
+--------+------+------+
我的代码:

    $result = $data->query("SELECT t3.name,t2.id t2_id,t1.id t1_id
    FROM table3 t3
    LEFT JOIN table2 t2 ON t2.name=t3.name
    LEFT JOIN table1 t1 ON t1.name=t3.name");
        while($line = mysql_fetch_array($result))
        {       
            echo '<tr><td>'.$line['name'].'</td>';
            if(!empty($line['t2_id'])) {
                echo 'tick'; //for each column
            } else {       //for each column
                echo 'cross';//for each column 
            }
        }   
        echo "</table>";
我只是尝试了一下,但没有成功:

$compare=100;
while($line = mysql_fetch_array($result)){       
    echo '<tr><td>'.$line['name'].'</td>';
    if(!empty($line['t2_id'])) {
        if ($globe1 == $compare){
            echo 'gold'; 
        } else {     
          echo 'trick';
        }
     } else {
         echo 'cross';
     }
$compare=100;
而($line=mysql\u fetch\u数组($result)){
回显'.$line['name'].';
如果(!空($line['t2_id'])){
如果($globe1==$compare){
回声“黄金”;
}否则{
呼应"把戏",;
}
}否则{
回音“十字架”;
}

编辑:更正一些问题。但这并不能解决我的问题。我没有PHP问题,但我不知道如何检查我的var是否为100

是否尝试启用PHP错误显示以查看是否存在任何PHP错误

我可以看到您的MySQL查询没有以字符串形式转义,这是一个问题。而不是:

$result = $data->query(SELECT t3.name,t2.id t2_id,t1.id t1_id
    FROM table3 t3
    LEFT JOIN table2 t2 ON t2.name=t3.name
    LEFT JOIN table1 t1 ON t1.name=t3.name);
你应该有这个:

$result = $data->query("SELECT t3.name,t2.id t2_id,t1.id t1_id
    FROM table3 t3
    LEFT JOIN table2 t2 ON t2.name=t3.name
    LEFT JOIN table1 t1 ON t1.name=t3.name");
echo 'cross'
另外,在最后一行,您有:

$result = $data->query("SELECT t3.name,t2.id t2_id,t1.id t1_id
    FROM table3 t3
    LEFT JOIN table2 t2 ON t2.name=t3.name
    LEFT JOIN table1 t1 ON t1.name=t3.name");
echo 'cross'
应该是这样的:

echo 'cross';

无论如何,请激活错误报告并告诉我们是否显示了任何错误。

您可以直接从SQL获取数据,如:

SELECT
  table3.name,
  CASE
    WHEN table1.perc = 100 THEN 'G'
    WHEN table1.perc!= 100 THEN 'V'
    WHEN table1.perc IS NULL THEN 'X'
  END AS tab1,
  CASE
    WHEN table2.perc = 100 THEN 'G'
    WHEN table2.perc!= 100 THEN 'V'
    WHEN table2.perc IS NULL THEN 'X'
  END AS tab2
FROM
  table3
    LEFT JOIN table1 
      ON table3.name=table1.name 
    LEFT JOIN table2 
      ON table3.name=table2.name

-因此,在结果行集合中,您将有
name
tab1
tab2
列,正如您所描述的,您所需要的是将其输出到HTML。

echo'cross'
没有
正确,但我的phpfile中没有这个问题:我不写“;”和“;”“在这篇文章中,但在我的phpfile中,他们是okNo,你不理解我的问题。我需要检查表1和表2中的名称是否在表3中。如果他们在表3中,我需要查看他们是否有一个“100”在perc列中,它会做一些事情,因为
LEFT JOIN
将为
表3
中的名称返回
NULL
-s,但不在
表1
/
表2
中,我正在尝试您的方法,我有一个问题:如何在我的表HTML中获得结果?我正在尝试if($line['table1.perc'='G')){echo'';}其他{但不要误会了这一点。整个结果集将包含列
name
(来自
表3
),
tab1
tab2
-用于从其他表中计算相应的
perc
字段。例如,您的数据已经准备好在
tab1
tab2
列中。那么……我如何才能获得输出?