多个表显示在行中

时间:2012-10-15 21:07:13

标签: mysql select html-table

出于某种原因,这给了我一个错误?

$result = mysql_query("SELECT wpjb_job.*,
                              wpjb_category.* 
                         FROM wpjb_job , 
                              wpjb_category
                        WHERE (is_filled='0' AND is_active='1')
                          AND wpjb_job.job_category = wpjb_category.id
                          AND job_country={$countryid}
                        ORDER BY wpjb_job.job_title") or die(mysql_error());

这是错误:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第6行的“ORDER BY wpjb_job.job_title”附近使用正确的语法

据我所知,我在服务器上安装了mySQL 5.1。代码仍然有效,但在表格之后给出错误。

我把它改成了以下只是为了测试。 现在它正常运行,但它会打印表格的标题两次,一次在开头,然后在结尾。更改是在$ countryid上,我现在把它设为'$ countryid',这没有错误

下面打印表格的代码

$joburl = "http://www.x.com/job/view/";
        $result = mysql_query("SELECT wpjb_job.*,wpjb_category.* 
                                    FROM wpjb_job , wpjb_category
                                        WHERE (is_filled='0' AND is_active='1')
                                        AND wpjb_job.job_category = wpjb_category.id
                                        AND job_country='$countryid' 
                                        ORDER BY job_title") 
                    or die(mysql_error());

        echo "<table border='1'>";
        echo "<tr> <th>Job</th> <th>Company</th> <th>Industry</th> </tr>";

// keeps getting the next row until there are no more to get

    while($row = mysql_fetch_array( $result )) {

// Print out the contents of each row into a table

        echo "<tr><td>"; 
        echo '<a href ="http://www.x.com/job/view/'.$row['job_slug'].'"> '.$row['job_title'].' </a>';
        echo "</td><td>"; 
        echo $row['company_name'];
        echo "</td><td>";
        echo $row['title'];
        echo "</td></tr>"; 
    } 
    echo "</table>";
    }

1 个答案:

答案 0 :(得分:1)

大括号(复杂语法)通常仅用于评估数组元素或对象属性以及其他复杂表达式({$array[val]}{$this->object})。您可以从查询中删除它们。这可能导致您的查询无法解释,具体取决于您的PHP版本和变量范围。您可以在查询字符串(echo)上执行echo "SELECT {$countryid}";进行检查。

此外,mysql_函数为being deprecated,如果要传递已由用户生成的变量,则应使用mysqli_PDO函数并绑定参数。

您的查询也使用隐式连接语法。编写连接查询时应该练习显式语法(参见下文)。最后,始终使用列列表而不是选择所有列表(SELECT *)以防止不必要的开销。

SELECT a.col1, a.col2, b.col1
FROM wpjb_job a
INNER JOIN wpjb_category b ON b.id = a.job_category
WHERE (is_filled=0 AND is_active=1)
    AND a.job_country = $countryid
ORDER BY a.job_title