-3

i have this array with data from a html form, and i want this array to be inserted into PHP function that handles the INSERT query into mysql.

how can i declare my array into PDO

   if (isset($_POST['submit'])); {
    $_POST['name'];
    $_POST['age'];


$myarray= array();
foreach ($_POST as $key => $value){
   $myarray[$key] = $value;
}

whatever($myarray);

}

functions whatever($myarray) {
    $sql=$db->prepare("INSERT INTO `user`(`name`, `age`) VALUES (:name,:age)");

    foreach($myarray as $row=>$value){
     $sql->bindValue(array($myarray)){
    }
    $sql->execute();
}

apology for forgetting the error.

this is what i get

    Warning: PDOStatement::bindValue() expects at least 2 parameters, 1 given in C:\Web\xampp\htdocs\submit.php on line 36

    Warning: PDOStatement::bindValue() expects at least 2 parameters, 1 given in C:\Web\xampp\htdocs\submit.php on line 36

    Warning: PDOStatement::bindValue() expects at least 2 parameters, 1 given in C:\Web\xampp\htdocs\submit.php on line 36

    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound' in 
C:\Web\xampp\htdocs\submit.php:38 Stack trace: #0 
C:\Web\xampp\htdocs\submit.php(38): PDOStatement->execute() #1 
C:\Web\xampp\htdocs\submit.php(12): register(Array) #2 {main} thrown in 
C:\Web\xampp\htdocs\submit.php on line 38
3
  • Take a look This Answer Commented Nov 6, 2013 at 14:58
  • Okay. So what exactly is the problem here? Commented Nov 6, 2013 at 14:58
  • What error message do you get? Commented Nov 6, 2013 at 14:59

1 Answer 1

1
function pdoSet($fields, &$values, $source = array()) {
  $set = '';
  $values = array();
  if (!$source) $source = &$_POST;
  foreach ($fields as $field) {
    if (isset($source[$field])) {
      $set.="`".str_replace("`","``",$field)."`". "=:$field, ";
      $values[$field] = $source[$field];
    }
  }
  return substr($set, 0, -2); 
}

This function will produce a correct sequence for the SET operator,

`field1`=:field1,`field2`=:field2

to be inserted into query and store avtual data values in $values array for execute().

$fields = array('id','name','age','loc'); // allowed fields
$sql = "INSERT INTO `user` SET".pdoSet($fields,$values);
$stm = $dbh->prepare($sql);
$stm->execute($values);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.