我已经创建了一个数据库Mysql,我在php中使用。我想要检查每个用户是否有数据。
我有三张桌子。在表中,User有一个名为ID_u的唯一值,而不是auto_increment,表Application有一个名为ID(auto_increment)的唯一值,表InformationUser有一个名为ID(auto_increment)的唯一值。表Users和InformationUser连接表Application。
ID_u = a user with id_u-> 1234
我试试这个:
if( ID_u exists data){
location1.php ->data
}else{
location2.php -> input information
}
我会感谢任何帮助!!
答案 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。如果您想知道两者是否都不存在,可以使用外连接。