如何检查表中是否存在元素(mysql)

时间:2013-05-11 11:42:05

标签: php mysql

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

我有三张桌子。在表中,User有一个名为ID_u的唯一值,而不是auto_increment,表Application有一个名为ID(auto_increment)的唯一值,表InformationUser有一个名为ID(auto_increment)的唯一值。表Users和InformationUser连接表Application。

enter image description here

ID_u = a user with id_u-> 1234

我试试这个:

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

我会感谢任何帮助!!

3 个答案:

答案 0 :(得分: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" ;
}

答案 1 :(得分:1)

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

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

如果你设置保留你的结构,我的第一个建议就是取消表Application上的自动增量。该表仅用于保存Users和InformationUser之间的关联。此外,您正在寻找的代码将是:

$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");
}

答案 2 :(得分:0)

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

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

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