我有3张桌子......
我正在编写一个允许用户查看所有帖子的函数,因此我想进行连接查询,以便在一个查询中将这三个表中的所有数据拉回来。
所有三个表都有我想要的完全相同的列,它们是......
到目前为止我写的查询我认为应该可行,但是当我使用bind param时,我得到了这个错误。
Warning: mysqli_stmt::bind_result() [mysqli-stmt.bind-result]: Number of bind variables doesn't match number of fields in prepared statement
我的查询如下所示......
$stmt = $this->conx->prepare("SELECT
dp.title, dp.category, dp.dateCreated, dp.alias,
ap.title, ap.category, ap.dateCreated, ap.alias,
np.title, np.category, np.dateCreated, np.alias
FROM posts_deletedPosts AS dp
INNER JOIN posts_archivedPosts AS ap
ON dp.author = ap.author
INNER JOIN posts_newPosts AS np
ON dp.author = np.author
WHERE dp.author = ?
LIMIT 5");
我对web dev很新,但我认为可以像这样执行连接并返回一个大型数据集。之前我确实使用了3个选择查询但是我想使用AJAX构建一些分页,所以我最好在一个完整的集合中需要这些数据。
这是我如何绑定参数
$stmt->bind_param("i",$uid);
答案 0 :(得分:1)
您不需要JOIN
,需要UNION
s:
SELECT title FROM posts_deletedPosts WHERE author=...
UNION
SELECT title FROM posts_archivedPosts WHERE author=...
UNION
SELECT title FROM posts_newPosts WHERE author=...