我是MySQLi的新手并准备好了陈述。最近一直在关注很多教程,以了解它们是如何工作的,但仍然无法弄明白这一点。当新用户尝试注册时,我想检查数据库中是否已存在用户名和电子邮件。以下代码在我对1表进行检查时有效,但在我尝试检查多个表中的现有条目时却没有。我已尝试加入和交叉加入条款以及联合和联合所有。 Dreamweaver没有显示语法错误,但必须在某处出现代码问题。我想知道在加入表之前是否必须在phpmyadmin中设置表之间的关系,但我不认为这会导致问题。
// check if the email is taken
$check = $mysqli->prepare("SELECT email FROM parents JOIN leaders WHERE parents.email = ? OR leaders.email = ?");
$check->bind_param("s", $input['email']);
$check->execute();
$check->store_result();
答案 0 :(得分:0)
好的,假设您有3个具有相同结构的表,您希望在一个查询中将UNION
表放在一起,WHERE
子句中有一个条件。
// UNION query to combine all three tables.
// The union is wrapped in a subquery to apply the single WHERE clause
// to the whole thing...
$sql = "
SELECT email FROM (
SELECT email FROM parents
UNION SELECT email FROM leaders
UNION SELECT email FROM guides
) combined
WHERE email = ?";
if ($check = mysqli->prepare($sql)) {
// Bind one input param
$check->bind_param("s", $input['email']);
$check->execute();
$check->store_result();
// Then fetch your row however you had planned to do so...
}
通常不建议多个表具有相同的结构。这里不是3个不同的表,而是应该有一个表合并所有表的表,并且有一个列将类型标识为leader,guide,parent
。