我想检查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
答案 0 :(得分:1)
如果要检查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");
}
}
答案 1 :(得分:0)
两种解决方案:
您可以使用户名字段唯一,这样,如果您尝试使用现有用户名插入行,则MYSQL将抛出错误。
cameraTrigger.onclick = function () { (### code ###) }.then(cameraStart())
否则,请使用所需的用户名进行选择,然后查看是否返回行(=已使用)或不返回(=可用)。
$sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
$q = $pdo->prepare($sql);
$result = $q->execute(array($username,$password,$role));
if(!$result) {
// print out your error message
}
答案 2 :(得分:-2)
SELECT * FROM users WHERE username = $username
如果发现显示错误,则插入
答案 3 :(得分:-2)
<?php
$getUniqueUsername=$con->query("select * from user where name='$user_name");
$rowCount=$getUniqueUsername->num_rows;
if($rowCount) {
$insertQuery=$con->query("insert into table_name (field_name) Values('".$values."'));
}
?>