2011-03-13 69 views
0

我尝试使用下面的PHP从基于通过URL传递给它一个参数一个MySQL表中提取信息。页面的URL是job.php?id=2,其中最后的数字2是要读取其数据的行的主键值。我能够echo$job_id价值,但是当我试图在mysql_query()功能,使用它,根本就没有数据返回。任何人都可以看到我要去哪里吗?问题与MySQL查询

<html> 
    <head> 
     <title></title> 
    </head> 

    <body> 
     <? 
      $job_id = $_GET["id"]; 
      echo $job_id; // This successfully prints the Job_ID 
      $query = "SELECT * 
           FROM job JOIN (employer, address) ON 
           (
            job.Employer_id_job = employer.Employer_ID 
            AND job.Address_id_job = address.Address_ID 
           ) 
           WHERE Job_ID = $job_id"; 
      if (!$query) 
      { 
       die ('Invalid query: ' .mysql_error()); 
      } 
      $result = mysql_query($query); 
      $row = $job_id - 1; 

      $job_title = mysql_result ($result, $row, "Title"); 
      $date_posted = mysql_result ($result, $row, "Date_posted"); 
      $application_deadline = mysql_result ($result, $row, "Application_deadline"); 
      $description = mysql_result ($result, $row, "Description"); 
      $company = mysql_result ($result, $row, "Company_name"); 
      $city = mysql_result ($result, $row, "City"); 
     ?> 

     <? echo $job_title; ?> 
    </body> 
</html> 

回答

1

所以,你所得到的ID到PHP中,你似乎误会怎么个e MySQL功能正常工作。

你不能靠行号是相关的主键。使用另一个取像mysql_fetch_assocmysql_fetch_array功能不依赖于行号。

http://www.php.net/manual/en/ref.mysql.php

这是正确的:

$query = "SELECT .... ::sql stuff::"; 
$result = mysql_query($query); 
$row = mysql_fetch_assoc($result); //this gives an associative arrow named $row, indexed by field name 

$job_title = $row['Title']; 

顺便说一下,下面的检查是没有意义的

if (!$query)    
    die ('Invalid query: ' .mysql_error()); 

它检查是否字符串$query是空白的,我们已经知道了心不是。你想干什么

if (!$result) 

因为mysql_query回报的资源(你可以做取上),如果查询运行正确或错误的,如果它不。

既然你还没有被正确地执行这项检查,我们不知道,如果你的查询失败BC连接或坏的查询字符串,或者如果查询运行得很好,你的结果取都是问题。

0

为什么当你可以mysql_fetch_assoc(使用mysql_result()明确每一行)并取得结果阵列,并且比它们打印出来:$行[“标题”] ...等

加,你如果检查对!$查询只检查字符串,而不是实际的查询资源

例如

$query = mysql_query("select Title,Date_posted from job where job_id = $job_id"); 
    if ($query) { 
    $result = mysql_fetch_assoc($query); 

    echo $result['Title']; 
    echo $result['Date_posted']; 
    } else { 
    echo "Query failed, error:", mysql_error(); 
} 

这里在这个例子将尝试查询数据库,如果没有会抛出错误。在大多数情况下,您遇到数据库连接问题。