php—如果mysql中的两个表的列名称相同,如何连接这两个表

edqdpe6u  于 2021-06-25  发布在  Mysql
关注(0)|答案(4)|浏览(414)
<?php
  error_reporting(E_ALL);
  ini_set('display_errors', 1);

  require_once 'admin/include/dbconfig.php';

  $counter = 0;

  $stmt = $DB_con->prepare('SELECT f_category.f_route, f_content.f_doc, 
  f_content.f_thumb, f_content.f_title FROM f_content, f_category WHERE 
  f_content.f_id = f_category.f_id AND f_id = :uid ORDER BY f_content.id 
  DESC');

  $stmt->bindParam(':uid',$id, PDO::PARAM_INT);
  $stmt->execute();

  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  extract($row);
?>

错误-致命错误:未捕获pdoexception:sqlstate[23000]:完整性约束冲突:where子句中的1052列“f\u id”不明确
如何解决。。??
谢谢您

xzlaal3s

xzlaal3s1#

可以使用别名。
另外,您没有在列名称后面使用别名 AND 接线员。

$stmt = $DB_con->prepare('SELECT b.f_route, a.f_doc, a.f_thumb, a.f_title FROM 
    f_content a, f_category b WHERE a.f_id = b.f_id AND a.f_id = :uid ORDER BY 
    a.id DESC');
js4nwp54

js4nwp542#

尝试此查询!您可以创建表的别名。

SELECT 
       fca.f_route      , 
       fco.f_doc        , 
       fco.f_thumb      ,
       fco.f_title 
    FROM 
       f_content    fco , 
       f_category   fca
    WHERE 
       fco.f_id  =  fca.f_id 
    AND 
       fca.f_id  = :uid 
    ORDER BY 
       fco.id DESC
xmq68pz9

xmq68pz93#

您需要指定 f_id 要在此处引用的表的。

SELECT f_category.f_route, f_content.f_doc, f_content.f_thumb,f_content.f_title 
FROM f_content, f_category 
WHERE f_content.f_id = f_category.f_id AND f_content.f_id = :uid
ORDER BY f_content.id DESC

f\U id输入 ...AND f_id = :uid... 应参考此处的任一表格,即。 f_content.f_id 或者 f_category .f_id

hs1rzwqc

hs1rzwqc4#

在列之前使用表名或使用表别名,两个表都有一列 f_id 因此,在where子句中,如果不为表指定表名或别名,则它是不明确的

SELECT b.f_route, a.f_doc,a.f_thumb, a.f_title 
FROM f_content a
JOIN f_category b ON a.f_id = b.f_id
WHERE  a.f_id = :uid 
ORDER BY a.id DESC

相关问题