php - 不应在数据库 mysql PHP 上更新空白字段

标签 php mysql mysqli sql-update

我总共有两个字段,即姓名和电子邮件,如果用户尝试仅更新电子邮件..它应该只更新电子邮件字段而不是姓名字段。就我而言,如果我们将输入字段保留为空白,则它会更新为空白值。这是我用于学习目的的 PHP 代码。我知道我提供的代码会导致 sql 注入(inject),但仅供我引用。请让我知道如何解决此现有代码,我知道我们可以使用 if(trim($name) == '') 等做一些事情,但不清楚如何在此代码上实现。

<?php

require('connections/connect.php');
$res = array();
if( $_REQUEST['tablename'] != null  &&
    $_REQUEST['idName'] != null  &&
    $_REQUEST['idValue'] != null 


){

        $tablename = $_REQUEST['tablename'] ;
        $idName = $_REQUEST['idName'] ;
        $idValue = $_REQUEST['idValue'] ;
        $name= $_REQUEST['name'] ;
        $email= $_REQUEST['email'] ;


        if (mysqli_query($conn,"UPDATE $tablename  SET status = 2 ,  name= '$name' , email ='$email'  WHERE $idName = $idValue" ) ){
                    $res['done'] =false;
                $res['error'] = false;
                $res['message'] = "Verified.";
                $res['tablename'] = $tablename;
                $res['idName'] = $idName;
                $res['idValue'] = $idValue;
                $res['updateadhar'] = $updateadhar;



        }else{
                $res['done'] =true;
            $res['error'] = true;
            $res['message'] = "Try again later.";
        } 
}else{
$res['error'] = true;
$res['message'] = "Fields are missing.";
}

echo json_encode($res);


?>

最佳答案

您可以再次读取更新中的用户信息,并检查发布的电子邮件地址是否为空,使用您已经读取的电子邮件数据。

在这种情况下,您确定正在更新现有用户。

<?php

require('connections/connect.php');
$res = array();
if( $_REQUEST['tablename'] != null  &&
    $_REQUEST['idName'] != null  &&
    $_REQUEST['idValue'] != null 

){


        $tablename = $_REQUEST['tablename'] ;
        $idName = $_REQUEST['idName'] ;
        $idValue = $_REQUEST['idValue'] ;
        $name= $_REQUEST['name'] ;
        $email= !empty($_REQUEST['email']) ? $_REQUEST['email'] : "" ;

        //read user info here 
        // $user = getUserInfo($idValue )
        // if($email == ""){
        //    $email = $user['emial'];
        // }


        if (mysqli_query($conn,"UPDATE $tablename  SET status = 2 ,  name= '$name' , email ='$email'  WHERE $idName = $idValue" ) ){
                    $res['done'] =false;
                $res['error'] = false;
                $res['message'] = "Verified.";
                $res['tablename'] = $tablename;
                $res['idName'] = $idName;
                $res['idValue'] = $idValue;
                $res['updateadhar'] = $updateadhar;



        }else{
                $res['done'] =true;
            $res['error'] = true;
            $res['message'] = "Try again later.";
        } 
}else{
$res['error'] = true;
$res['message'] = "Fields are missing.";
}

echo json_encode($res);

关于php - 不应在数据库 mysql PHP 上更新空白字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112748/

相关文章:

php - .htaccess 链接 css 未链接

mysql - 将数据库中的扩展名前的文件名加 1

php - 格式化结果集如何在 PHP 中返回和显示

javascript - 停止在 PHP AJAX MySQL 中重复 div 内容

c++ - Qt5.2可以找到mysql驱动但是加载不出来

php - 从 MySQL 获取信息

php - 开始错误输出

php - GD星评插件 : Altering Dynamic Cascading Style Sheet

php - Laravel 从公共(public)目录中删除目录

php 发送正常时间但 mysql 插入 00 :00:08 into table which is wrong