【问题标题】:PHP connecting to two tables in a while loopPHP在while循环中连接到两个表
【发布时间】:2012-10-20 07:36:41
【问题描述】:

我相信我有一个小而相当简单的问题,但是我已经尝试了所有方法,但我就是无法弄清楚这种语法。

我将首先输入以下代码(php):

require_once('connectvars.php'); // My database connection

//Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
//Retrieve the data from the database
$query = "SELECT * FROM pbclickslogin WHERE username='$username'";
$data = mysqli_query($dbc, $query);
while ($info = mysqli_fetch_array( $data )) {
    echo $info['lol']; echo $info['lol2'];
}

所以我编造了这个例子,让我们说“$info['lol'];”是名为“pbclickslogin”和“$info['lol2'];”的表中的列是名为“pbclickssomethingelse”的表中的一列。但是我不能同时连接到两个数据库,或者我可以吗?

我已尝试添加:

$query = "SELECT * FROM pbclickslogin, pbclickssomethingelse WHERE username='$username'";

还有这个:

$query = "SELECT * FROM pbclickslogin WHERE username='$username'";
$query2 = "SELECT * FROM pbclickssomethingelse WHERE username='$username'";
$data = mysqli_query($dbc, $query, $query2);
while ($info = mysqli_fetch_array( $data )) {
    echo $info['lol']; echo $info['lol2'];
}

但正如你们中的一些有经验的 PHP 用户可能知道的那样。这两件事并没有解决我的问题。你们有谁知道我在执行 while 循环时如何连接到这两个数据库?

【问题讨论】:

  • 当你说“连接两个数据库”时,你的意思是连接到同一个数据库中的两个表吗?您是否还需要修改这些调用之间的 DB_HOST 或 DB_NAME 变量?
  • 是的,我的意思是:s 对不起,我搞砸了数据库和表格。我有一个数据库,其中有两个需要连接的表。主键是“用户名”,然后我需要通过两个不同的表连接到不同的列。感谢您的宝贵时间!

标签: php sql database while-loop connect


【解决方案1】:

您可以对两个表进行连接,而不是两个单独的查询。这是一个简单的例子:

    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    $data = mysqli_query($dbc, "SELECT * FROM pbclickslogin, pbclickssomethingelse WHERE pbclickslogin.username = pbclickssomethingelse.username AND pbclickslogin.username='" . $username . "'");
    while ($info = mysqli_fetch_array( $data )) {
        echo $info['lol']; echo $info['lol2'];
    }

【讨论】:

  • 太棒了,我放学回家后一定要试试;)
  • 嗯,虽然看起来很简单,但无法让它工作?我收到相同的错误消息:警告:mysqli_fetch_array() 期望参数 1 是 mysqli_result,在 /home/virtual/******.com/public_html/clicks/stats.php 中给出的布尔值它以某种方式返回布尔值?可能是因为数据库/表调用出错了。
  • @Peter:我已经更新了查询(我将 username='$username' 更改为 pbclickslogin.username='$username')。立即尝试
  • 哦,哈哈,我以为除了我的问题之外,这段代码还有一些严重的问题,但无论如何我仍然无法让它按照你的方式工作?虽然我在两个表中都有一个用户名列。嗯
  • @Peter:根据文档,mysqli_query() 有时会根据查询类型以及查询是否成功返回布尔值。我更新了mysqli_query 并更改了连接的完成方式。不确定这是否会解决它,但值得一试..
【解决方案2】:
SELECT * FROM pbclickslogin l
   INNER JOIN pbclickssomethingelse s ON l.username = p.username
   WHERE l.username='$username'

根据您提供的示例,我能做到的最好。这将通过两个表上的用户名将表连接在一起,然后您选择“其中”用户名是特定值。

我强烈建议您阅读一些有关 PHP 和 SQL 的教程。

【讨论】:

  • 我正在阅读教程,是关于 PHP 和 MYSQL 的第一本书,但他们没有提到这一点。你为什么“认真”推荐它?有什么严重的问题吗?
  • 好吧,我的意思不是听起来那么“严肃”,哈哈,它只是连接表的 SQL 方式就是加入。您可以找到这方面的教程,或者您正在查看的教程的后续阶段可能会介绍连接,在这种情况下,请继续阅读它们
  • 哦,是的,哈哈,我想除了我的问题之外,我的代码可能还有一些非常严重的问题。感谢您抽出宝贵时间回复,我知道它工作正常。祝你有美好的一天:)
猜你喜欢
  • 2019-10-30
  • 2016-11-27
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 2019-03-08
相关资源
最近更新 更多