【问题标题】:insert array data into mysql using PDO使用 PDO 将数组数据插入 mysql
【发布时间】:2013-11-17 21:04:45
【问题描述】:

我有这个数组,其中包含来自 html 表单的数据,我希望将这个数组插入到 PHP 函数中,该函数将 INSERT 查询处理到 mysql 中。

如何将我的数组声明为 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();
}

为忘记错误道歉。

这就是我得到的

    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

【问题讨论】:

  • 看看This Answer
  • 好的。那么这里到底有什么问题呢?
  • 你得到什么错误信息?

标签: php arrays pdo


【解决方案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); 
}

此函数将为 SET 运算符生成正确的序列,

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

插入到查询中并将实际数据值存储在$values 数组中,用于execute()

$fields = array('id','name','age','loc'); // allowed fields
$sql = "INSERT INTO `user` SET".pdoSet($fields,$values);
$stm = $dbh->prepare($sql);
$stm->execute($values);

【讨论】:

    猜你喜欢
    • 2017-07-03
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2018-08-01
    • 2013-11-14
    相关资源
    最近更新 更多