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