Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在数据库中检查用户名并更新[html、mysql、php]_Php_Html_Mysql - Fatal编程技术网

在数据库中检查用户名并更新[html、mysql、php]

在数据库中检查用户名并更新[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) {

我从昨天开始一直在尝试,几乎在Stackoverflow plus Google中涵盖了所有与此相关的问题,但到目前为止,我没有任何工作,我尝试在更新数据库中的用户名之前检查用户名的可用性,然而,它不会检查并始终直接更新用户名,而不会显示关于用户名不可用的错误消息

这是我的密码

//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-添加记录,如果不存在,则首先检查用户名是否已在表中并更新它