Thursday, 15 May 2014

php - PDO inserting 1 instead of value from foreach statement -



php - PDO inserting 1 instead of value from foreach statement -

i have form posts bunch of info script insert db:

the posts are:

$_post['fname'] = "bob"; $_post['lname'] = "jones"; $_post['smsnum'] = "12345"; $_post['pass1'] = "1234567890"; $_post['company'] = "acme"; $_post['uname'] = "bjones"; $_post['perms'] = "user"; $_post['active'] = "1";

my insert statement:

$ins = "insert login (firstname,lastname,smsnumber,password,company,username,permissions,active) values (:fname,:lname,:smsnum,:pass1,:company,:uname,:perms,:active)";

if this:

$stmt->bindparam(':fname',$_post['fname']); $stmt->bindparam(':lname',$_post['lname']); $stmt->bindparam(':smsnum',$_post['smsnum']); $stmt->bindparam(':pass1',$_post['pass1']); $stmt->bindparam(':company',$_post['company']); $stmt->bindparam(':uname',$_post['uname']); $stmt->bindparam(':perms',$_post['perms']); $stmt->bindparam(':active',$_post['active']);

it works fine.

if this:

foreach($_post $k => $v) { $stmt->bindparam(":".$k,$v); }

the result digit "1" inserted every field in db. thoughts why?

with bindparam() declaring pdo should utilize variable $v parameter. when statement executed utilize value lastly iteration of foreach loop.

you have 1 of these:

$stmt->bindparam(":".$k,$_post[$k]);

this tell pdo utilize value $_post variable.

or:

$stmt->bindvalue(":".$k,$v);

this utilize actual value in $v @ current iteration of loop.

php mysql pdo

No comments:

Post a Comment