Saturday, 15 August 2015

php - looping through sql insert statement to generate multiple rows -



php - looping through sql insert statement to generate multiple rows -

so know deprecated , unsafe, it's 1 of lastly things trying work through before switching on sqli. don't think beingness in sql should complicate much. anyways, trying loop through generate row each userid input _post 'userids' field. part of relatively simple multi-recipient message system

if (empty($_post['userids'])) { echo "no user ids input"; } $seq = 1; $uids = explode(',', $_post['userids']); $uids[] = $sess_username; $uids = array_unique($uids); print_r(array_values($uids)); $rows = array(); foreach ($uids $uid) { $rows[] = array('uid'=>(int)$uid); } print_r(array_values($rows)); if (!$uids) { die('no user ids selected: ' . mysql_error()); if (empty($messageid)) { $messageid = mysql_insert_id(); } $insertsql = "insert message_recips (messageid, sequence, userid, status) values"; foreach ($rows $row) { $insertsql .= "(" . $params[] = $messageid . "," . $params[] = $seq . "," . $params[] = $row['uid'] . ",'" . $params[] = $row['uid'] == $sess_user_id ? 'a' : 'n' . "'),"; } $insertsql = substr($insertsql, 0, -1); var_dump($insertsql); var_dump($params); $result1 = mysql_query($insertsql); echo "$insertsql"; var_dump($insertsql); var_dump($params); if (!stmt) { "sql error after stmt"; } die(header('location: view.php?id=' . $mid)); } else { echo "no recips found"; die('no recips found'); }

my array populating with:

array (size=8) 0 => int 35 1 => int 1 2 => int 273 3 => string 'n' (length=1) 5 => int 1 6 => int 0 7 => string 'n' (length=1)

and sql result is:

string 'insert message_recips values('35', '1', 'array', 'array')' (length=62)

the array looks me, generating 1 row in sql table , inserting first 4 values row.

a sincere help.-a

see if gets closer needs. have commented changes are.

error_reporting(e_all); if(empty($_post['userids'])) { echo "no user ids input"; } else { $seq = 1; $uids = explode(',', $_post['userids']); $uids[] = $sess_username; $uids = array_unique($uids); foreach($uids $uid) { $rows[] = array('uid'=> (int)$uid); } // have syntax error here if (!$uids) die('no user ids selected: ' . mysql_error()); if(empty($messageid)) $messageid = mysql_insert_id(); // set multi-dimensional array $i = 0; foreach($rows $row) { $params[$i][] = "'$messageid'"; $params[$i][] = "'$seq'"; $params[$i][] = "'".$row['uid']."'"; $params[$i][] = ($row['uid'] == $sess_user_id)? "'a'" : "'n'"; $i++; } // set front end of sql statement, placeholding column names, need alter them $insertsql = "insert message_recips (`message_id`,`seq`,`uid`,`session`) values"; // implode values generated above foreach($params $arrays) { $values[] = "(".implode(",",$arrays).")"; } // implode multiple rows $sqls = implode(",",$values); // combine front end end $sql = $insertsql.$sqls; $result = mysql_query($sql); }

php mysql

No comments:

Post a Comment