在数据库中检查用户名并更新[html、mysql、php]
我从昨天开始一直在尝试,几乎在Stackoverflow plus Google中涵盖了所有与此相关的问题,但到目前为止,我没有任何工作,我尝试在更新数据库中的用户名之前检查用户名的可用性,然而,它不会检查并始终直接更新用户名,而不会显示关于用户名不可用的错误消息 这是我的密码在数据库中检查用户名并更新[html、mysql、php],php,html,mysql,Php,Html,Mysql,我从昨天开始一直在尝试,几乎在Stackoverflow plus Google中涵盖了所有与此相关的问题,但到目前为止,我没有任何工作,我尝试在更新数据库中的用户名之前检查用户名的可用性,然而,它不会检查并始终直接更新用户名,而不会显示关于用户名不可用的错误消息 这是我的密码 //new connection $con = new mysqli("localhost", "student", "student", "C14D5"); if ($con->connect_errno) {
//new connection
$con = new mysqli("localhost", "student", "student", "C14D5");
if ($con->connect_errno) { //failed
echo "Failed to connect to MySQL: (" . $con->connect_errno . ") " . $con->connect_error;
}
//success
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['clientN'])) {
$query = mysqli_query("SELECT client_name FROM clients WHERE client_name='".$_POST['clientN']."'");
if (mysqli_num_rows($query) != 0) {
echo "<script>
alert('Username is not available, please select another username.');
</script>";
header('Location: '. $_SERVER['HTTP_REFERER'] );
} else {
// run sql
$sql ="UPDATE `clients` SET `client_name` = '".$_POST['clientN']."' WHERE `client_ID` = '".$_POST['SelectClient']."'";
if ($con->query($sql) === TRUE) {
echo "<h3> New record created successfully</h3>";
header('Location: '. $_SERVER['HTTP_REFERER'] );
} else {
echo "Error : " . $sql . "<br>" . $con->error;
}
$con->close();
}
}
//新连接
$con=新的mysqli(“本地主机”、“学生”、“学生”、“C14D5”);
如果($con->connect\u errno){//失败
echo“未能连接到MySQL:(“$con->connect\u errno.”“$con->connect\u error;
}
//成功
如果($\u服务器['REQUEST\u METHOD']='POST'){
如果(isset($_POST['clientN'])){
$query=mysqli\u query(“从客户机中选择客户机名称,其中客户机名称=”。$\u POST['clientN'].“”);
if(mysqli_num_行($query)!=0){
回声“
警报('用户名不可用,请选择其他用户名');
";
标题('Location:'.$\u服务器['HTTP\u REFERER']);
}否则{
//运行sql
$sql=“UPDATE`clients`SET`client\\u name`='”$\u POST['clientN']。“'WHERE`client\\u ID`='”$\u POST['SelectClient']。”;
如果($con->query($sql)==TRUE){
echo“新记录创建成功”;
标题('Location:'.$\u服务器['HTTP\u REFERER']);
}否则{
echo“Error:”.$sql.“
”$con->Error;
}
$con->close();
}
}
您可以使用mysqli\u num\u rows()函数来避免数据库中的数据重复
使用此代码:
//specify the database connection factors as usual ,then
$uname = $_POST['your_username_field'];
$sql = "SELECT * FROM your_db where username='$uname'";
//the variable 'sql' will store the resultset of the query
$num_row = mysqli_num_rows($sql);
// the 'num_row' will store the number of rows which matches your $sql resultset. So if it is greater than '0' then the data already exists
if( $num_row > 0)
{
// display 'username exists error'
}
else
{
// Insert user name into your database table
}
如果num_rows大于0,则用户名已存在于数据库表中。因此,在这种情况下抛出错误。否则,请将用户名插入数据库并显示成功消息。除了使用不安全的SQL查询外,请尝试将If(mysqli_num_rows($query)!=0)更改为If(mysqli_num_rows($query)==0)您很容易受到Paul_M的攻击,它工作正常,但现在回显“警报('用户名不可用,请选择其他用户名');”;不工作抱歉,这是一个错误,您有一个逻辑缺陷,您试图更新不存在的记录,但看起来您正在插入新记录,需要首先检查用户名是否已存在,返回的行数是否等于0-添加记录,如果不存在,则首先检查用户名是否已在表中并更新它