You are here: Re: strange behaviour using arrays to update records « PHP Programming Language « IT news, forums, messages
Re: strange behaviour using arrays to update records

Posted by mantrid on 08/07/06 12:12

Ive made the changes you suggested. I dont get any errors now but the
records are not updating. It is most puzzling. My updated code is below


****************************************************************************
*****
$delarray=$_POST['del'];//not needed in the sql of first two queries so isnt
in for loop

if(count($delarray)==0){
for ($i = 0; $i < count($commindexarray); $i++){
$currtime=date('YmdHis');
$cat = intval($_POST['category'][$i]);
$comm = mysql_real_escape_string($_POST['comm'][$i]);
$avail =$_POST['avail'][$i];
$commindex = intval($_POST['commindex'][$i]);

$q2 ="UPDATE usercomms SET typeid=$cat WHERE userid=".$_SESSION['userid']."
AND commindex =$commindex";//
$updateusercomm = mysql_query($q2) or die('<br><span
class=RedWarning>Sorry, there was a problem updating. Try
again.<br><br>Error - 1 '.count($delarray). mysql_error().'</span>');
$q="UPDATE comments SET typeid=$cat, comment='$comm', available=$avail,
timestp='$currtime', globalavail=0 WHERE commindex=$commindex";//
$updatecomm = mysql_query($q) or die('<br><span class=RedWarning>Sorry,
there was a problem updating some records. Try again.<br><br>Error - 2
'.count($delarray).mysql_error().'</span>');
}
}

************************************************************************

Im also getting the following warning (below) on the bottom of the page. It
isnt affecting anything as it also appears with other queries I run on this
page which do work. Does anyone know what causes it. I dont think I can
follow its suggestion for not displaying it as I dont think I can alter any
settings on my hosting companies server. if that is what its asking me to
do.



Warning: Unknown(): Your script possibly relies on a session side-effect
which existed until PHP 4.2.3. Please be advised that the session extension
does not consider global variables as a source of data, unless
register_globals is enabled. You can disable this functionality and this
warning by setting session.bug_compat_42 or session.bug_compat_warn to off,
respectively. in Unknown on line 0

THANKS Ian


"Miguel Cruz" <spam@admin.u.nu> wrote in message
news:spam-6605DF.14173407082006@localhost...
> "mantrid" <ian.dandav@virgin.net> wrote:
> > Im having problems working out why the following code does not work. I
dont
> > think its the sql as the error occurs on the first update which ever one
is
> > put there ($q1 or $q2). Ive swapped then around to test this.
> > Help greatly appreciated
> >
> > The error is Unknown column 'A' in 'field list'
> > but there is no field 'A'. im thinking that the 'A' may be first letter
of
> > the word Array, as if it is using this as a variable, but i dont know
how.
> >
> >
> > $commindexarray=$_POST['commindex'];
> > $catarray=addslashes($_POST['category']);
> > $commarray=addslashes($_POST['comm']);
> > $availarray=$_POST['avail'];
> > $delarray=$_POST['del'];
> >
> > if($delarray==''){
> > for ($i = 0; $i < count($commindexarray); $i++){
> > $currtime=date('YmdHis');
> > $q2 ="UPDATE usercomms SET typeid={$catarray[$i]} WHERE userid=
> > ".$_SESSION['userid']." AND commindex ={$commindexarray[$i]}";//
> > $updateusercomm = mysql_query($q2) or die('<br><span
> > class=RedWarning>Sorry, there was a problem updating. Try
> > again.<br><br>Error - 1 '.count($delarray). mysql_error().'</span>');
> > $q="UPDATE comments SET typeid={$catarray[$i]},
comment='{$commarray[$i]}',
> > available={$availarray[$i]}, timestp='$currtime', globalavail=0 WHERE
> > commindex={$commindexarray[$i]}";//
> > $updatecomm = mysql_query($q) or die('<br><span class=RedWarning>Sorry,
> > there was a problem updating some records. Try again.<br><br>Error - 2
> > '.count($delarray).mysql_error().'</span>');
> >
> > }
> > }
>
> PHP is not Perl. If you call addslashes() on an array, it treats it as a
> string, which means it has the value "Array". Then, when $i == 0 and you
> look at $catarray[$i], you get the first character, which is 'A'.
>
> You need to iterate through your arrays and call addslashes on each
> element individually. The most efficient way would be to move the
> addslashes (or perhaps mysql_real_escape_string instead) inside the $i
> for loop that you already have:
>
> for ($i = 0; $i < count($commindexarray); $i++)
> {
> $cat = intval($_POST['category'][$i]);
> $comm = mysql_real_escape_string($_POST['comm'][$i]);
> $q = "update usercomms
> set type = {$cat},
> comm = {$comm}
> where whatever";
> }
>
> miguel
> --
> Photos from 40 countries on 5 continents: http://travel.u.nu
> Latest photos: Malaysia; Thailand; Singapore; Spain; Morocco
> Airports of the world: http://airport.u.nu

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация