2011-03-13 74 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(); 
} 

這裏在這個例子將嘗試查詢數據庫,如果沒有會拋出錯誤。在大多數情況下,您遇到數據庫連接問題。