Re: [PHP-DB] Not updating certain fields in same row

[email protected] ("Daniel Brown")
Newsgroups php.db
Message-ID <[email protected]>
On Tue, Mar 25, 2008 at 1:14 PM, Jason Pruim <[email protected]> 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";

-- 
</Daniel P. Brown>
Forensic Services, Senior Unix Engineer
1+ (570-) 362-0283
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.