2014-10-29 81 views
-1

編譯此代碼時發生錯誤..有人可以幫助我嗎?在php中搜索編碼

search.html

<form name="form" method="post" action="search0.php"> 
       Search by Matric No.: 
       <input type="text" name="patron_ID" placeholder="Student No."> 
       <input type="submit" name="Submit" value="Search"> 
      </form> 

search0.php

<?php 
/* include db connection file*/ 
include("dbconnect.php"); 

/* capture student number */ 
//$idsaja = $_POST['idsaja']; 
$patron_ID = $_POST['patron_ID']; 

/* execute SQL statement */ 
$sql= " SELECT br.patron_ID, p.patron_Name, br.book_Accession, b.book_Title, br.borrowed_Date, 
        br.discharged_Date, br.due_Date, b.book_Status 

        FROM borrow br 
        INNER JOIN patrons p 
        ON p.patron_ID = br.patron_ID 
        JOIN book b 
        ON b.book_Accession = br.book_Accession 
        WHERE patron_ID = '$patron_ID'"; 

//"SELECT * FROM patrons WHERE patron_ID= '$patron_ID'"; 
$query = mysql_query($sql) or die ("Error: ".mysql_error()); 
$row = mysql_num_rows($query); 

if($row == 0){ 
echo "No record found"; 
} 
else{ 
$r = mysql_fetch_assoc($query); 
$patron_ID = $r['patron_ID']; 
$patron_Name = $r['patron_Name']; 
$book_Accession = $r['book_Accession']; 
$book_Title = $r['book_Title']; 
$borrowed_Date = $r['borrowed_Date']; 
$discharged_Date = $r['discharged_Date']; 
$due_Date = $r['due_Date']; 
$book_Status = $r['book_Status']; 
?> 

的錯誤是 「錯誤:列 'patron_ID' 在where子句不明確」。什麼意思呢?誰能給我解釋一下..

+0

您的代碼很容易受到SQL注入式攻擊。 – Dai 2014-10-29 00:33:54

+0

嘗試添加'WHERE br.patron_ID',考慮使用mysqli或PDO來代替 – Ghost 2014-10-29 00:34:28

+0

您只需要將表添加到它,就像其他的'WHERE p.patron_ID' – 2014-10-29 00:34:37

回答

0

你肯定有其他的(一個或多個)表(S)另一patron_ID,在where子句「p.patron_ID」

3

前綴你的專欄,我認爲該消息是不言自明。

您的SQL查詢多個表:我看到borrowpatrons。這兩個表都包含一個名爲patron_ID的列,而MySQL不知道您是指borrow.patron_ID還是patrons.patron_ID(事實上有一個外鍵關係對MySQL沒有幫助)。

您需要通過提供完整的列名稱以及表名前綴來消除歧義,您可以使用全名或別名。

0

我錯過something..The代碼應該是這樣的:

$sql= " SELECT br.patron_ID, p.patron_Name, br.book_Accession, b.book_Title, br.borrowed_Date, 
        br.discharged_Date, br.due_Date, b.book_Status 

        FROM borrow br 
        INNER JOIN patrons p 
        ON p.patron_ID = br.patron_ID 
        JOIN book b 
        ON b.book_Accession = br.book_Accession 
        **WHERE br.patron_ID = '$patron_ID'";** 

我的錯誤就解決了..謝謝大家:)