0

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

$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>";
    }
4

1 回答 1

1

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

此外,不推荐mysql_使用函数,如果要传递用户生成的变量,则应使用函数或绑定参数。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
于 2012-10-15T22:52:44.173 回答