【问题标题】:PHP - Get second column value from primary key on same rowPHP - 从同一行的主键获取第二列值
【发布时间】:2012-10-03 18:12:54
【问题描述】:

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

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”

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

【问题讨论】:

标签: php mysql database select


【解决方案1】:

您必须将 $title 用引号括起来,如下所示:

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

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

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

【讨论】:

  • @YusafKhaliq 这个答案中链接的清单现在已经过时了,改用这个stackoverflow.com/questions/60174/…
  • 我会为你重复我的评论,因为你没有在你的回答中提到它。如果可以避免,请不要使用mysql_* 功能,它们不再维护,社区已开始deprecation process。相反,您应该了解prepared statements 并使用PDOMySQLi。如果您无法决定,this article 将帮助您选择。如果你想学习,here is a good PDO-related tutorial.
  • 嘿@vascowhite 如果你已经阅读了我的个人资料描述我是 php 和 mysql 的新手,这对我来说只是自学练习,我并不完全理解网络术语,但是从什么我阅读并评论了,你是说我应该学习 PDO 或 MysQLi,你个人建议学习哪个?
  • @YusafKhaliq 我还没有查看您的个人资料。我肯定会推荐学习 PDO,请点击我评论中的链接以获得易于理解的教程。 mysql_ 函数很快就会消失,所以学习它们是浪费时间。您会很高兴您将精力投入到 PDO 中。祝你好运。
  • 还有一个 Qs 来使用 MySQLi 我还能在 cpanel 上使用旧的 mysql 数据库吗?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2016-12-28
    • 2020-12-30
    • 1970-01-01
    相关资源
    最近更新 更多