2

我有 3 张桌子

+----+--------+----+  +----+--------+----+  +----+--------+
+ 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>";

我对“perc”的查询:

$perc_1 = $data->query("SELECT `perc`FROM `tab1`");
$globe1 = mysql_fetch_array($perc_1);
$perc_2 = $data->query("SELECT `perc`FROM `tab2`");
$globe2 = mysql_fetch_array($perc_2);

我刚刚尝试过但不起作用:

$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';
     }

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

4

2 回答 2

2

您是否尝试启用 php 错误显示以查看是否有任何 PHP 错误?

http://php.net/manual/fr/function.error-reporting.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'

应该是这样的:

echo 'cross';

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

于 2013-09-16T07:42:54.053 回答
1

您可以直接从 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 中。

于 2013-09-16T07:44:59.927 回答