出于某种原因,这给了我一个错误?
$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>";
}
答案 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