gpt4 book ai didi

php - 是否可以仅使用一个 sql 来执行此操作?

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:46 25 4
gpt4 key购买 nike

我想要一个插入查询,但在插入之前我检查用户名和电子邮件是否被其他人使用。如果使用,我想取消插入查询并回显一条消息,说明用户名或电子邮件是否正在使用中。

这是我的代码:

$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 的回答,但您可能对以下备选方案感兴趣:

  1. emailusername 提供 UNIQUE 约束,为这两者创建一个唯一索引。
  2. 运行您的INSERT 查询,如果失败...(由于重复键)
  3. 运行建议的组合 SELECT,以确定存在哪个字段(用户名或电子邮件)

关于php - 是否可以仅使用一个 sql 来执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6722863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com