我想要一个插入查询,但在插入之前我检查用户名和电子邮件是否被其他人使用。如果使用,我想取消插入查询并回显一条消息,说明用户名或电子邮件是否正在使用中。
这是我的代码:
$sql = "SELECT 1 FROM user WHERE username='".$_POST['username']."'";
if(!$result = mysql_query($sql))
die(mysql_error());
while($row = mysql_fetch_array($result))
die('This username is already exists');
$sql = "SELECT 2 FROM user WHERE email='".$_POST['email']."'";
if(!$result = mysql_query($sql))
die(mysql_error());
while($row = mysql_fetch_array($result))
die('This email address is already exists');
$sql = "insert into user (username,email,password,tel,type) values ('".$_POST['username']."','".$_POST['email']."','".$_POST['password']."','".$_POST['telnumber']."','member')";
if(!mysql_query($sql))
die(mysql_error());
我想将这三个 sql 语句合二为一。它可以是使用案例或您建议的其他内容。所以, 是否可以将此代码压缩到一个 sql 查询中?
结果我需要的是
sql = "sql_query"
if(!$result = mysql_query($sql))
die(mysql_error());
while($row = mysql_fetch_array($result)){
if($row['result']==1)
die('This username is already exists');
else if($row['result']==2)
die('This email is already exists');
}
die('you have succesfully registered');
感谢您的任何建议。
最佳答案
虽然我建议您遵循@cularis 的回答,但您可能对以下备选方案感兴趣:
- 为
email
和username
提供UNIQUE
约束,为这两者创建一个唯一索引。 - 运行您的
INSERT
查询,如果失败...(由于重复键) - 运行建议的组合
SELECT
,以确定存在哪个字段(用户名或电子邮件)
关于php - 是否可以仅使用一个 sql 来执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6722863/