<?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]:完整性约束违规:1052 where子句中的列'f_id'不明确
如何解决.. ??
谢谢
答案 0 :(得分:1)
您需要在此处指定要引用的表的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
...AND f_id = :uid...
中的 f_id应引用此处的任一表格,即f_content.f_id
或f_category .f_id
答案 1 :(得分:0)
在列之前使用表名或使用表别名,两个表都有一列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
答案 2 :(得分:0)
您可以使用别名。
此外,您错过了在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');
答案 3 :(得分:0)
试试这个查询! 您可以创建表的别名。
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