php - 检查这是否重复
问题描述
我想检查是否username
已经存在,如果存在则抛出错误消息,任何提示我该怎么做?我已经尝试搜索但只找到mysql_errno
但它对我不起作用。
if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//$password = md5($password);
$sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($username,$password,$role));
Database::disconnect();
header("Location: index.php");
}
sd
解决方案
如果要检查是否username
已使用:
SELECT * FROM users WHERE username = :username
如果你返回一行:你抛出你的错误,否则你做你的INSERT
所以你的代码应该是这样的:
if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql_check = "SELECT * FROM users WHERE username = :username";
$test = $pdo->prepare($sql_check);
$test->bindParam(':username', $username);
$test->execute;
现在这里有两个解决方案来检查你是否有一行:
if($test->rowCount() > 0) {
// error
}
或者
$user = $test->fetch();
if (!empty($user)) {
// error
}
现在,如果您没有错误,请插入:
else {
//$password = md5($password);
$sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($username,$password,$role));
Database::disconnect();
header("Location: index.php");
}
}
推荐阅读
- aws-lambda - 是否可以将所有 Cloudwatch 日志流式传输到 S3 或 EC2 中的文件?
- java - 用Java生成数独
- r - 如何在 R 中对组内的列进行排序?
- android - Android kaptDebugKotlin failed + SQL 错误或缺少数据库(没有这样的表:约会)
- java - 如何制作@Scheduled 注释的动态参数?
- java - 从 2 Arraylist 中删除常用条目
- json - 如何只转换为json可以转换的数据?
- mysql - 如何在express.js中使用mysql将n个输入存储到一个数组中
- c# - 如何在没有其他 Nuget 包的情况下打开 zip 文件?
- angular - 延迟加载与 Childroutes 不起作用