Php 尝试从多个表中选择信息时,mysqli prepared语句出现问题

Php 尝试从多个表中选择信息时,mysqli prepared语句出现问题,php,mysqli,Php,Mysqli,我对MySQLi相当陌生,并准备了一些声明。最近一直在关注很多教程,以了解它们是如何工作的,但仍然无法理解这一点。当新用户尝试注册时,我想检查数据库中是否已经存在用户名和电子邮件。以下代码在我检查1个表时有效,但在我尝试检查多个表中的现有条目时无效。我试过连接和交叉连接子句,以及union和union all。Dreamweaver没有显示任何语法错误,但肯定有代码问题。我想知道在加入表之前是否必须在phpmyadmin中设置表之间的关系,但我认为这不会导致问题 // check if the

我对MySQLi相当陌生,并准备了一些声明。最近一直在关注很多教程,以了解它们是如何工作的,但仍然无法理解这一点。当新用户尝试注册时,我想检查数据库中是否已经存在用户名和电子邮件。以下代码在我检查1个表时有效,但在我尝试检查多个表中的现有条目时无效。我试过连接和交叉连接子句,以及union和union all。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();  

好的,假设您有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个不同的表,而是一个组合了所有表的表,并且有一列标识类型为
引线、导轨、父项

父项
引线
之间的关系是什么?
电子邮件
列是否相关,或者是否有两个不相关的表?此外,您有两个
占位符,但只有一个绑定参数
$check->bind_param(“ss”、$input['email']、$input['email'])
(前提是查询正确)如果您在mysql控制台中以假定的工作值运行此请求,您会得到什么?我对所有这些东西都是新手。这两个表都具有相同的结构,并且两个表中的userid都设置为主键,但我没有在phpmyadmin中设置表之间的关系。我有3个表,叫做guides、parents和leaders,其中包含关于站点注册成员的信息,我想检查所有这些表中是否有现有条目。我还尝试了bind_param'ss',但也没有成功:(关于用户名和电子邮件,我希望避免在所有三个表中都有重复的条目。我希望避免在用户尝试更改其密码时添加单选按钮以选择正确的表。当仅选择一个表时,代码正常工作,用户可以完美地更新其密码。我不希望leader更改密码。)assword表示存在于其他表中的用户,只是因为他们共享相同的用户名和电子邮件。我会尝试。希望它能起作用。感谢快速响应:)我希望将来成为一名优秀的程序员,这个网站似乎是一个新加入编程世界的完美场所。这很有效:)当我试图使用联合条款时,我知道我遗漏了一些东西。非常感谢。我很高兴我加入了这个论坛。我想我早就应该这么做了。UPDATE语句也一样吗?还是我必须对语法做一些更改??谢谢你advance@Illumiele不,我不相信有任何对
UPDATE
联合的支持,或者肯定没有我遇到过的任何东西。您可以在
UPDATE
JOIN
,如果您有一些
user
表,其中包含每个表的权威用户id,这可能会起作用,但如果可能的话,最好的解决方案是将它们合并到一个表中。