2

我已经创建了一个数据库 Mysql 并在 php 中使用。我希望检查每个用户是否有数据。

我有三张桌子。在表 User 中有一个唯一值称为 ID_u 并且不是 auto_increment,表 Application 有一个唯一值称为 ID(auto_increment),表 InformationUser 有一个唯一值称为 ID(auto_increment)。表用户和信息用户与表应用程序连接。

在此处输入图像描述

ID_u = a user with id_u-> 1234

我试试这个:

if( ID_u  exists data){
    location1.php ->data
}else{
    location2.php -> input information
}

我会感谢任何帮助!

4

3 回答 3

2

我不确定我是否了解您的数据库的结构,但您可以看看这个:

$query = "
SELECT * FROM users u
LEFT JOIN application a
ON u.ID_u = a.ID_u
LEFT JOIN informationuser i
ON a.ID = i.ID
//Here you can specify 'WHERE u.ID_u IN (1,2,3,4)'
GROUP BY i.ID
" ;


$users = array() ; //Create storage for users. Use their ID as indeces
$result = $mysqli->query($query) ;
if ($result && $result->num_rows >= 1){
  while ($row = $result->fetch_assoc()){
    if (!isset($users[$row['ID_u'])){
      $users[$row['ID_u']] = array() ; //Create array for a new user
    }
    $users[$row['ID_u']][] = array(  //Fill array in with data and add it to user.
      "email" => $row["email"],
      "phone" => $row["phone"]
    ) ;
  }
}

然后,让我们检查用户的数据是否存在ID = 3(如果 3 是int):

if (!empty($users[3])){
  echo "Yeah, data exists for user with ID 3" ;
}
于 2013-05-11T11:55:44.510 回答
1

首先,如果用户只能拥有一组电话和电子邮件,最好将这些数据保存在用户表中,以便具有以下结构:

用户 ID_u 姓名surename 电子邮件电话

如果您设置为保留现有结构,我的第一个提示是取消表 Application 上的自动增量。该表只是为了保存用户和信息用户之间的相关性。此外,您要查找的代码类似于:

$sql = "SELECT * FROM Application WHERE ID_u = '1234'";
$result = mysql_query($sql) or die("Woops!");
if ($data = mysql_fetch_array($result)) {
 include("location1.php");
}
else {
 include("location2.php");
}
于 2013-05-11T11:49:50.353 回答
1

所以你有用户,你有应用程序。在每个应用程序上,其背后可能有不同的电子邮件和名称。所以你需要加入,看看是否存在。这种风格的东西

select count(*)
  from Application 
  join InformationUser on (InformationUser.ID = Application.ID)
 where 
       Application.ID_U = ?

如果两者都不存在,则上面给出的 count = 0。如果您想知道两者是否不存在,您可以使用外连接。

于 2013-05-11T11:55:05.950 回答