【问题标题】:INNER JOIN is not working, i do not get errorsINNER JOIN 不起作用,我没有收到错误
【发布时间】:2019-10-25 10:00:29
【问题描述】:
$result = mysqli_query($conn,"SELECT * FROM table1 INNER JOIN `table2`
ON `table1`.`id`=`table2`.`id`;");

while ($row = mysqli_fetch_array($result) ){
  echo 'name <textarea>'.$row["name"].'</textarea>';
}

在 LAb (wampserver) 上,我得到了关于“名字”的信息,但在真正的网站上,我没有得到关于“名字”的信息。

【问题讨论】:

  • 如果它不能在实时站点上运行,我几乎可以保证您正在遇到错误 - 但它们没有被显示。您是否成功连接到数据库? $conn实际值是多少?
  • SELECT table2*, table1.* FROM table1 INNER JOIN table2 ON table1.id=table2.id
  • 不要使用select *。如果两个表都有同名的列,那么不清楚你会得到哪个值。

标签: php sql select inner-join echo


【解决方案1】:

可能会出现一些错误但不显示。

首先我建议你检查一下连接:

$conn = mysqli_connect("$host", "$user "my_password", "$DBname");
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

如果有效,请检查查询错误:

if($result = mysqli_query($conn,"SELECT * FROM table1 INNER JOIN `table2`
ON `table1`.`id`=`table2`.`id`;"))
{
    while ($row = mysqli_fetch_array($result) ){
      echo 'name <textarea>'.$row["name"].'</textarea>';
    }
}
else echo($conn->error);

其他可能的原因可能是:

  • ON 子句

    条件是真的:

    开启table1.id=table2.id

    还是应该是这样的?

    `ON `table1`.`id`=`table2`.`rif_id`
    
  • table1table2 中没有可供选择的数据

    您是否在live 数据库中检查是否有数据可供选择?可能碰巧忘记在实时数据库中插入数据。

另外,您是否在 PhpMyAdmin 中手动尝试过查询?

【讨论】:

  • 谢谢,它的工作。我也犯了错误,Unicode不一样。
【解决方案2】:

我不知道你想收集什么,但你可以使用下面的查询来获取记录。它会为你工作。

"select t1.* from table1 t1 inner join table2 t2 ON t1.id=t2.id"

【讨论】:

    【解决方案3】:

    请检查连接可能是实时连接不同。还要删除 table2.id 之后的分号 (;)。可能你的问题已经解决了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 2015-03-10
      相关资源
      最近更新 更多