2

我在一个数据库中有两个表。

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)

但是我被提示错误

'where 子句'中的未知列'a'

有什么问题,我该如何解决?

4

2 回答 2

2

您必须将 $title 括在引号中,如下所示:

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

如果您有用户提供的输入,则应确保您的代码在所有情况下都是安全的。

在这篇文章中有一些很好的信息:https ://stackoverflow.com/questions/3714107/php-mysql-security-checklist-the-definitive-practical-guide

于 2012-10-12T21:36:07.357 回答
1

与其在循环中进行单独的查询,不如使用连接通过一个查询来获取所有信息:

SELECT t1.id AS id, title, version
FROM tableone t1
JOIN tabletwo t2 ON t1.title = t2.id
于 2012-10-12T21:42:00.103 回答