我在一个数据库中有两个表。
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表。
第二张表
id | version
---------
a | 1
b | 3
c | 6
d | 7
在第一个表的while循环中,我已将标题值预定义为
$title = $id['title'];
在while循环中我正在使用另一个while循环但是这次我尝试使用预定义的标题来访问第二个表上匹配的id对应的版本行值:
mysql_query("SELECT version FROM tableone WHERE ID=".$title)
然而我暗示了错误
未知栏' a'在' where子句'
问题是什么?我该如何解决?
答案 0 :(得分:2)
您必须将$ title括在引号中,如下所示:
mysql_query("SELECT version FROM tableone WHERE ID='".$title."'")
如果您有用户提供的输入,则应确保您的代码在所有情况下都是安全的。
在这篇文章中有一些关于它的好信息:https://stackoverflow.com/questions/3714107/php-mysql-security-checklist-the-definitive-practical-guide
答案 1 :(得分:1)
不是在循环中进行单独的查询,而是使用连接通过一个查询获取所有信息可能更好:
SELECT t1.id AS id, title, version
FROM tableone t1
JOIN tabletwo t2 ON t1.title = t2.id