Пустые поля не должны обновляться в базе данных mysql PHP - PullRequest
0 голосов
/ 01 мая 2018

У меня всего два поля, т. Е. Имя и адрес электронной почты. Если пользователь пытается обновить только электронную почту ... он должен обновить только поле электронной почты, но не поле имени. В моем случае это обновление с пустым значением, если мы оставим поле ввода пустым. Вот код PHP, который я использую для целей обучения. Я знаю, что код, который я предоставил, вызывает инъекцию SQL, но это только для моей справки. Пожалуйста, дайте мне знать, как решить этот существующий код, я знаю, что мы должны что-то делать с 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);


?>

Ответы [ 3 ]

0 голосов
/ 01 мая 2018
require('connections/connect.php');
$res = array();
$check=false;

if(($_REQUEST['name'] !=null) && ($_REQUEST['email'] != null)){
    //in this case they both are set
    $check=mysqli_query($conn,"UPDATE $tablename  SET status = 2 ,  name= '$_REQUEST['name']' , email ='$_REQUEST['email']'  WHERE $idName ='$_REQUEST['id']' " );
}
else if(($_REQUEST['name'] !=null) && ($_REQUEST['email'] == null)){
    //only name is set
    $check=mysqli_query($conn,"UPDATE $tablename  SET status = 2 ,  name= '$_REQUEST['name']'  WHERE $idName ='$_REQUEST['id']' " );

}else if(($_REQUEST['name'] ==null) && ($_REQUEST['email'] != null)){
    //only email is set
     $check=mysqli_query($conn,"UPDATE $tablename  SET status = 2 , email ='$_REQUEST['email']'  WHERE $idName ='$_REQUEST['id']' " );
}


if (!$check){
    $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.";
} 


echo json_encode($res);
0 голосов
/ 01 мая 2018

попробуйте этот код

<?php
require('connections/connect.php');
$res = array();
if(!is_null($_REQUEST['tablename']) && !is_null($_REQUEST['idName']) && !is_null($_REQUEST['idValue'])){
    if(!empty(trim($_REQUEST['name'])) && !empty(trim($_REQUEST['email']))){
        $tablename = $_REQUEST['tablename'] ;
        $idName = $_REQUEST['idName'] ;
        $idValue = $_REQUEST['idValue'] ;
        $name= trim($_REQUEST['name']);
        $email= trim($_REQUEST['email']) ;
        $sql = "UPDATE `{$tablename}`SET status = 2, name= '{$name}', email ='{$email}' WHERE `{$idName}` = '{$idValue}'";
        if(mysqli_query($conn,$sql)){
            $res = array_merge(array('done' => false, 'error' => false, 'message' => 'Verified.', 'updateadhar' => $updateadhar), compact('tablename','idName','idValue'));
        }else{ $res = array('done' = true, 'error' => true, 'message' => "Try again later."); }
    }else{ $res = array('error' => true, 'message' => "Name/Email are missing."); }
}else{ $res = array('error' => true, 'message' => "Fields are missing."); }
echo json_encode($res);
?>
0 голосов
/ 01 мая 2018

Вы можете снова прочитать информацию о пользователе в обновлении и проверить, является ли опубликованный адрес электронной почты пустым, использовать данные электронной почты, которые вы прочитали уже.

В этом случае вы уверены, что обновляете существующего пользователя.

<?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);
...