2014-03-27 22 views
-2

我創建了兩個表 1:Employee_Personal_Info和2:Compensation。我給他們與EPI_NO(員工ID)的關係。當我執行此查詢我如何通過員工ID從內部聯接表搜索

$sql_search = "Select * FROM Employee_Personal_Info 
INNER JOIN Compensation ON Employee_Personal_Info.EPI_NO=Compensation.EPI_NO;" 
or die (sql_error); 

它工作正常,並顯示所有記錄。現在我想通過提交EPI_NO ID來通過提交按鈕搜索特定員工。

<form action="" method="get"> 
Search From Database <input type="text" name="searchdata"/> </br> 
<input type="submit" value="Employee Personal and Contact Info" name="info" /> </form> 

Plz幫助我。

+0

條款您是否想要爲您編寫的'SELECT ... FROM ... INNER JOIN ... WHERE'查詢或標記?或兩者?你已經嘗試了什麼? – talegna

回答

0

添加WHERE聲明

$sql_search = "Select * FROM Employee_Personal_Info 
INNER JOIN Compensation ON Employee_Personal_Info.EPI_NO=Compensation.EPI_NO 
WHERE Employee_Personal_Info.EPI_NO = 1;" 
or die (sql_error); 

在這種情況下1就是你正在尋找的員工ID。

要將此與您的代碼進行整合,您需要prepare您的查詢。

這是一個例子,使用上述文檔中的代碼。

$id = $_POST['searchdata']; 

/* create a prepared statement */ 
if ($stmt = $mysqli->prepare("Select * FROM Employee_Personal_Info 
INNER JOIN Compensation ON Employee_Personal_Info.EPI_NO=Compensation.EPI_NO 
WHERE Employee_Personal_Info.EPI_NO = ?")) { 

    /* bind parameters for markers */ 
    $stmt->bind_param("s", $id); 

    /* execute query */ 
    $stmt->execute(); 

    /* bind result variables */ 
    $stmt->bind_result($employee); 

    /* fetch value */ 
    $stmt->fetch(); 

    /* close statement */ 
    $stmt->close(); 
} 
+0

謝謝安迪..我有另一個問題,我有另一個在Microsoft Access上創建的數據庫。當我運行你給定的代碼時,它會給出錯誤。 注意:未定義的變量:mysqli在F:\ DreamWeaver \ xampp \ htdocs \ – CreAToR

+0

該代碼是PHP。 SQL本身應該工作。我不知道訪問的所有這一切,但你需要用你的值替換'?',並且該查詢應該可以爲你工作 – Andy

0

使用此,

$ sql_search = 「SELECT * FROM Employee_Personal_Info INNER JOIN補償ON Employee_Personal_Info.EPI_NO = Compensation.EPI_NO AND Employee_Personal_Info.EPI_NO =」。$ _ GET [ 'searchdata'。」 ;」

+0

但是在表單方法中用作「GET」,

從數據庫中搜索

0

通過這種方式,你可以在這種情況下添加WHERE statemen

<? 

$sql_search = "Select * FROM Employee_Personal_Info 
INNER JOIN Compensation ON Employee_Personal_Info.EPI_NO=Compensation.EPI_NO;" or die (sql_error); 

if(isset($_POST['searchdata'])) 
{ 
    $sql_search = $sql_search." WHERE ".$_POST['searchdata']; 
} 

?> 

,您使用得到的形式,所以你可以,如果要求它與$ _GET [「searchdata」]

+0

請不要向新程序員展示編寫查詢的錯誤方法。您的代碼容易受到SQL注入的攻擊。相反,他們應該使用[準備](http://php.net/manual/en/mysqli.prepare.php)聲明 – Andy