|  | Posted by Rik on 10/18/06 15:22 
Aaron Reimann wrote:> Here is my code:
 > if (is_array($_POST['commentsid'])) {
 >
 > foreach ($_POST['commentsid'] as $id) {
 >
 > $query  = mysql_query("SELECT id_ministry FROM join_comments WHERE
 > id_ministry = '$id'")
 > or die("Bad query: ".mysql_error());
 
 Euhm, security? I'd use an intval($id) or something to be sure it's not a
 sql-injection.
 
 > ## if it is not in the database, insert the id
 >          if (mysql_num_rows($query) == "0") {
 > $insert =
 > "INSERT INTO ".
 > "join_comments (username, creation_stamp, id_people, id_ministry) ".
 > "VALUES ('$_SESSION[valid_user]', '$datetime', '$_POST[id]',
 > '$id')";
 
 You do know you don't HAVE to concate?
 $insert = "INSERT INTO
 join_comments (username, creation_stamp, id_people, id_ministry)
 VALUES
 ('$_SESSION[valid_user]', '$datetime', '$_POST[id]','$id')";
 
 Will work just fine, and saves some useless overhead.
 
 > I think I need to do my delete before everything.  He is an "english"
 > version of what I think needs to be done:
 >
 > do a query selected all that is in the database
 >   compare what was checked this time against was is checked now
 >   if something is no longer checked {
 >      delete from database the ones that are not in the database now
 >   }
 > }
 >
 > I hope this makes sense.
 
 1. Create an array of available id's from you database (mysql_query(),
 mysql_fetch_array() loop).
 2. Make sure it's the same format as your $_POST array.
 3. array_walk(array_name,'intval') to make sure you have all integers.
 4. $to_be_deleted = array_dif($available_array,$post_array).
 5. foreach($to_be_deleted) loop delete.
 
 If I see your code now, I'd say that you might benifit from some protection
 from SQL-injections. Loop up the subject on google, expacially
 mysql_real_escape_string() etc.
 
 Never, ever, trust userdata, not even when they're logged in, trusted
 users.
 --
 Grtz,
 
 Rik Wasmus
  Navigation: [Reply to this message] |