Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #6083

Re: update mysql without manually tying SET statements

Message-ID <4224096.JhdAhAFyse@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Organization PointedEars Software (PES)
Date 2012-05-16 18:06 +0200
Subject Re: update mysql without manually tying SET statements
Newsgroups comp.lang.php
References <23804394.335.1337177557295.JavaMail.geo-discussion-forums@ynlm14> <jp0d8i$g9d$1@dont-email.me>
Followup-To comp.lang.php

Followups directed to: comp.lang.php

Show all headers | View raw


Shake wrote:

> El 16/05/2012 16:12, apavluck@gmail.com escribió:
>> I am trying to setup some generic code that will allow me to update a
>> mysql database via form and php.  I can capture the data in the row of
>> the database that I want to update.  I can present that in a form
>> populated with the existing values.  What I can't figure out how to do is
>> to avoid typing out the SET statements in the update query.
>> [...]
>> The reason I want to do this is because I manage many projects all with
>> their own variables and databases and the update is the only part that I
>> have to type in manually.
> 
> Withouth entering in details, security and best practices...
> 
> $sqlString = ' UPDATE blablalba SET ';

The leading space does not make sense.

> foreach($_POST as $key => $value)
> {
>    $sqlString .= " `$key` = '$value', ";
> }
> 
> // You have to deal here a little with the last comma ;)

That is one reason why you should _not_ build queries that way, but at least 
join an array instead.  See also <news:1762069.ZWGnKmheAe@PointedEars.de>.
 
> It's possible not all data in $_POST are fields of the database. You
> could manage prefixing the indexes or other ways...
> 
> foreach($_POST as $key => $value)
> {
>    if(!preg_match('/^my_prefix.+/',$key)) continue;
>    $sqlString .= " `$key` = '$value', ";
> }

Or you filter out the items that you do not want, by key, using the 
array_filter() function, which also returns the array to join that
I mentioned above.

<http://php.net/array_filter>


PointedEars
-- 
Sometimes, what you learn is wrong. If those wrong ideas are close to the 
root of the knowledge tree you build on a particular subject, pruning the 
bad branches can sometimes cause the whole tree to collapse.
  -- Mike Duffy in cljs, <news:Xns9FB6521286DB8invalidcom@94.75.214.39>

Back to comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

update mysql without manually tying SET statements apavluck@gmail.com - 2012-05-16 07:12 -0700
  Re: update mysql without manually tying SET statements Shake <QUITAESTO@QUITAESTO.NOES> - 2012-05-16 16:23 +0200
    Re: update mysql without manually tying SET statements Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-05-16 18:06 +0200
    Re: update mysql without manually tying SET statements apavluck@gmail.com - 2012-05-17 11:06 -0700
      Re: update mysql without manually tying SET statements Shake <alex.estevezQUENO@QUENOfilnet.es> - 2012-05-17 21:06 +0200
  Re: update mysql without manually tying SET statements "M. Strobel" <sorry_no_mail_here@nowhere.dee> - 2012-05-16 22:48 +0200
    Re: update mysql without manually tying SET statements IRC <ircadhikari@gmail.com> - 2012-05-17 04:14 -0700
      Re: update mysql without manually tying SET statements Erwin Moller <erwinmollerusenet@xs4all.nl> - 2012-05-18 10:49 +0200
  Re: update mysql without manually tying SET statements bill <nobody@spamcop.net> - 2012-05-17 07:09 -0400

csiph-web