2012-10-12 29 views
2

我在一個數據庫中有兩個表。PHP - 從同一行的主鍵獲取第二列值

id | title 
---------   // table name is tableone 
1 | a 
2 | b 
3 | c 
4 | d 
5 | a 
6 | b 
7 | c 
8 | d 

第一張表的主鍵是ID列。從這張表我使用PHP來創建一個工作正常的HTML表。

我已經預定義爲

$title = $id['title']; 
while循環內

我使用另一個while循環但此時的標題值的第二個表

id | version 
--------- 
a | 1 
b | 3 
c | 6 
d | 7 

在第一表格中的while循環我我試圖使用預定義標題訪問第二張表上匹配的id對應的版本行值:

mysql_query("SELECT version FROM tableone WHERE ID=".$title) 

但是我跟在「A」的錯誤

未知列暗示「where子句」

是什麼問題,如何解決呢?

+0

歡迎來到堆棧溢出!如果你可以避免它,請不要使用'mysql_ *'函數,它們不再被維護,並且社區已經開始[棄用過程](http://goo.gl/KJveJ)。相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你想學習,[這裏是一個很好的PDO相關教程](http://goo.gl/vFWnC)。 – vascowhite

回答

2

你應該必須用引號括起來$標題是這樣的:

mysql_query("SELECT version FROM tableone WHERE ID='".$title."'") 

如果您的用戶提供的輸入,你應該確保你的代碼是安全的所有情況。

在這篇文章是關於一些好的信息:https://stackoverflow.com/questions/3714107/php-mysql-security-checklist-the-definitive-practical-guide

+0

輝煌謝謝:) –

+1

@YusafKhaliq該清單鏈接到這個答案是相當過時的現在,用這個來代替http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in -php – vascowhite

+1

我會重複你對你的評論,因爲你沒有在你的回答中提到它。如果你可以避免它,請不要使用'mysql_ *'函數,它們不再被維護,並且社區已經開始[棄用過程](http://goo.gl/KJveJ)。相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你想學習,[這裏是一個很好的PDO相關教程](http://goo.gl/vFWnC)。 – vascowhite

1

而是在循環中做一個單獨的查詢中,它可能是更好地得到所有的信息與使用加入一個查詢:

SELECT t1.id AS id, title, version 
FROM tableone t1 
JOIN tabletwo t2 ON t1.title = t2.id