Again, i'm new to php and modifying some open source scripts, and I have another issue. I can't figure out why this code below that originally posted a record, doesn't work when modified to edit the record instead. The INSERT version that works @mysql_query(" INSERT INTO reminders (date_field,email,comment,recur_num, recur_val,adv_notice,notify_num,notify_val, recurring,remid,subject,usrname) VALUES ('$query','$my->email','$comment','$recur_num', '$recur_val','$adv_notice', '$notify_num','$notify_val','$recurring','$remid','$subject', '$my->username') "); Code (markup): The update version that doesn't work - I do want to edit by the different field remid. @mysql_query(" UPDATE reminders SET date_field='$query',email='$my->email',comment='$comment',recur_num='$recur_num',recur_val='$recur_val',adv_notice='$adv_notice', notify_num='$notify_num',notify_val='$notify_val',recurring='$recurring',remid='$remid',subject='$subject', usrname='$my->username' WHERE remid='$remid'"); Code (markup): The whole page if the above code is not the issue extract($_POST); extract($_GET); $remid = $_POST['remid']; $result=mysql_query(" SELECT * FROM passwd WHERE email='$email'"); while ($row=mysql_fetch_array($result)){ $ckpasswd=$row['epasswd']; $blocked=$row['eblocked']; } $edate=date("M d Y, h:ia ").$dbtimezone; if ( ( ((USE_EREMINDERS_AUTHENTICATION) && ($ckpasswd=="")) || ( (USE_APACHE_AUTHENTICATION) && ($result==0)) ) && ($email != '')) { // Seed random generator srand((double)microtime()*1000000); for ($i=1; $i<=$passlength; $i++){ $epasswd=$epasswd.chr(rand(97,122)); } if (RESTRICT_NEW_USER_REGISTRATION) { } else if (PERMIT_NEW_USER_REGISTRATION) { @mysql_query(" INSERT INTO passwd (email,epasswd,eip,edate) VALUES ('$email','$epasswd','$REMOTE_ADDR','$edate')"); } $ckpasswd=$epasswd; $message = $ins_req. " ".$REMOTE_ADDR." ".$ins_made."\n"; $message .= $ins_add."\n"; $message .= $ins_at." ".$site.". \n\n"; $message .= $ins_log." ".$epasswd; $message .= "\n\n".$ins_msg1.": \n".$site.". \n\n"; $message .= "\n".$ins_msg2."\n"; $message .= $ins_msg3."\n"; $message .= $ins_msg4."\n"; if (RESTRICT_NEW_USER_REGISTRATION) { } else if (PERMIT_NEW_USER_REGISTRATION) { mail ($email, $ins_rem, $message,"From: $from"); } msg_box($ins_new, $ins_set."<P>".$ins_sent." ".$email.$ins_back1." <b>".$ins_back2."</b> ".$ins_back3."<P>".$ins_tnx,"black"); // Yes, this exit in the middle is not optimal, but it works. echo "</BODY></HTML>"; exit; } if ($ckpasswd==$epasswd) { @mysql_query(" UPDATE passwd SET edate='$edate' WHERE email='$email'"); @mysql_query(" UPDATE passwd SET eip='$REMOTE_ADDR' WHERE email='$email'"); if ($hour == "12") {$hour="00";} if ($ampm == "pm") {$hour=$hour+12;} $query=$year.$month.$cal_day."03"."00"."00"; $remid=uniqid(""); $shortcomment=$comment; /* Show the time THEY set the event for, in THEIR timezone */ if ($adv_notice == "yes"){ $comment=$month."-".$cal_day."-".$year." at ".$hour.":".$minute." GMT".($localzone>=0?'+':'').$localzone."...\n\n".$comment; } @mysql_query(" UPDATE reminders SET date_field='$query',email='$my->email',comment='$comment',recur_num='$recur_num',recur_val='$recur_val',adv_notice='$adv_notice',notify_num='$notify_num',notify_val='$notify_val',recurring='$recurring',remid='$remid',subject='$subject',usrname='$my->username' WHERE remid='$remid'"); if ($adv_notice=="yes") { $result=mysql_query(" SELECT * FROM reminders WHERE remid='$remid'"); $row=mysql_fetch_array($result); $interval=$row['notify_num']; switch ($row['notify_val']) { case "day" : $interval=$interval*86400; break; case "minute" : $interval=$interval*60; break; case "hour" : $interval=$interval*3600; break; case "month" : $interval=$interval*2592000; break; case "year" : $interval=$interval*31536000; break; } $result=mysql_query(" SELECT unix_timestamp(date_field) FROM reminders WHERE remid='$remid' "); $row=mysql_fetch_array($result); $new_time=$row['unix_timestamp(date_field)']-$interval; @mysql_query(" UPDATE reminders SET date_field=FROM_UNIXTIME($new_time) WHERE remid='$remid'"); } $result=mysql_query(" SELECT unix_timestamp(date_field) FROM reminders WHERE remid='$remid' "); $row=mysql_fetch_array($result); $new_time=$row['unix_timestamp(date_field)']-(($localzone-$dbtzoffset)*3600); @mysql_query(" UPDATE reminders SET date_field=FROM_UNIXTIME($new_time) WHERE remid='$remid'"); Code (markup):
You're not letting MySQL tell you what the problem is. Take the @ out infront of your query, and add OR die( mysql_error() ); at the end of your query. mysql_query("UPDATE [....]") OR die( mysql_error() ); PHP:
Take away @ from mysql_query() - is hides all error messages. Try this code: $result = mysql_query(...); if ($result == false) { echo mysql_error(); } PHP: it will prints you complete error message, even pointing part of query where error is.
Also ECHOing the query before executing it helps a lot! Try: $query="INSERT INTO ......"; echo $query; $result=mysql_query($query); etc...
Interesting - I made the changes (I haven't tried Rasczak's yet), and I have just a black screen with nothing displayed.
I can echo the value that I am using for the where clause correctly. I am now getting this error. Shouldn't the function name be mentioned in that error line? The function is $mysql_query, correct? Fatal error: Call to undefined function: () in (filename) on line <b>105 Here is the code for that line. $mysql_query(" UPDATE reminders SET date_field='$query',email='$my->email',comment='$comment',recur_num='$recur_num',recur_val='$recur_val',adv_notice='$adv_notice',notify_num='$notify_num',notify_val='$notify_val',recurring='$recurring',remid='$remid',subject='$subject',usrname='$my->username' WHERE remid='$remid'") OR die( mysql_error() ); Code (markup):
Well, technically, you COULD have a variable called $mysql_query that is bound to the function of the same name and then it would work. But that would be gross. <?php $sin = sin; echo "the sin of 45 is " . $sin(45); // and to prove it isn't a weird trick due to the same name... $foo = sin; echo "the sin of 45 is (still) " . $foo(45); ?> Code (markup): -John.
i got your point... anyway (for tyler) - i'm talking about something like this: $query = "SELECT foo FROM table WHERE 1 ORDER BY foo"; echo $query; $result = mysql_query($query); if you would operate with mysql_query("SELECT foo FROM table WHERE 1 ORDER BY foo"); you wouldn't be able to debug anything, is that right?