Re: Not updating certain fields in same row

From: Date: Tue, 25 Mar 2008 18:57:05 +0000
Subject: Re: Not updating certain fields in same row
References: 1 2 3 4  Groups: php.db 
Request: Send a blank email to php-db+get-44785@lists.php.net to get a copy of this message
I might be way off here. Php.net tells me that: [quote] mysql_real_escape_string — Escapes special characters in a string for use in a SQL statement string **mysql_real_escape_string** ( string $unescaped_string [, resource $link_identifier ] ) [/quote] and you use [quote] mysqli_real_escape_string($chpwpostlink, $_POST['txtLoginName']); [/quote] I can't imagine that $_POST['txtLoginName'] is a resource identifier (which is the actual connection to your database). Also, this condition: [quote] if (!isset($_POST['txtLoginName']) || empty($_POST['txtLoginName'])) [/quote] is true if and only if no form element by the name txtLoginName existed on the previous page - and on top of that, empty() does the same as isset() and apart from that also checks whether, if the variable has been set, it has a value (0, "", NULL or FALSE) that evaluates to FALSE. I don't understand why you'd want to fill the username with a tab either: "\t". Maybe you can post your full code? Evert Daniel Brown wrote:
On Tue, Mar 25, 2008 at 1:14 PM, Jason Pruim <japruim@raoset.com> wrote:
the actual query I'm using is this:
        $chpwsql = "UPDATE current SET customerName='$customerName',
loginName='$loginName', loginPassword='$PW', email='$email', adminLevel='$adminLevel' WHERE Record='$Record1'"; What it is doing now is if I don't set a a field I am replacing the content of it with a tab, which isn't what I want. Basically what I'm looking for is if loginPassword hasn't changed... don't clear the contents of it. if it has changed, then update loginPassword
    
Okay, since you won't only want to rely on isset() here (in case someone accidentally hits a key into the field), try this: // NOTE: This assumes prior sanity checks and cleansing // of variables, and is written like so to avoid breaking // of the query due to mail client-enforced line breaks. $chpwsql = "UPDATE current SET "; $chpwsql .= "customerName='".$customername."',"; $chpwsql .= "loginName='".$loginName."',"; if(preg_match('/^[a-z0-9]{5,16}$/i',$PW)) {
    // If it's between 5-16 case-insensitive alphanumeric
    // characters, it's all good. If you want to allow symbols,
    // simply modify the regexp accordingly.
    $chpwsql .= "loginPassword='".$PW."',";
} $chpwsql .= "email='".$email."',"; $chpwsql .= "adminLevel='".$adminLevel',"; $chpwsql .= " WHERE Record='".$Record1."'"; $chpwsql .= " LIMIT 1";


« previous php.db (#44785) next »