php - PDO INSERT INTO 准备好的数组

标签 php mysql pdo

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [rowno] => 1.00000000
                    [date_line] => 2014-10-08
                    [name] => Dan Volunteer
                    [affiliation] => trying
                    [checkno] => 1
                    [amount] => 0.01000000
                    [total] => 1.01000000
                    [notes] => almost
                    [date_deposit] => 2014-10-10
                )

            [1] => Array
                (
                    [rowno] => 2.00000000
                    [date_line] => 2014-10-09
                    [name] => Forest G
                    [affiliation] => Shrimp
                    [checkno] => 101
                    [amount] => 1.00000000
                )

        )

)

我从 HTTP POST 中获得了准确的数据:

rowno=1.00000000&date_line=2014-10-07&name=Dan%20Volunteer&affiliation=Enterprise&checkno=1701&amount=20025.00000000&total=20250.00000000&notes=&date_deposit=&rowno=2.00000000&date_line=2014-10-07&name=Harper%20Lee&affiliation=Enterprise%20B&checkno=1702&amount=225

HTTP POST 使用 ProcessPost 类进行格式化

<?php

class ProcessPost
        {
            public  static  function Split($value = '')
                {
                    if(!empty($value)) {
                            // Explode by row values
                            $rows   =   explode("rowno=",$value);
                            $rows   =   array_filter($rows);

                            if(is_array($rows) && !empty($rows)) {
                                    foreach($rows as  $_row => $querystring) {
                                            parse_str("rowno=".$querystring,$_array[]);
                                        }

                                    foreach($_array as $row_key => $row_val) {
                                            if(empty($row_val))
                                                unset($_array[$row_key]);
                                        }

                                    return $_array;
                                }
                        }
                }
        }

    $test   =   file_get_contents("php://input");

    $insert =   ProcessPost::Split($test);


$db = null;
if (isset($_SERVER['SERVER_SOFTWARE']) &&
strpos($_SERVER['SERVER_SOFTWARE'],'Google App Engine') !== false) {
  // Connect from App Engine.
  try{
     $db = new pdo('mysql:unix_socket=/cloudsql/cinnamon:toast;dbname=crunch', 'root', '');
  }catch(PDOException $ex){
      die(json_encode(
          array('outcome' => false, 'message' => 'Unable to connect.')
          )
      );
  }
};

$array = array($insert);
foreach( $array as $key=>$value ) {
try {
  if (array_key_exists('name', $_POST)) {
    $stmt = $db->prepare('INSERT INTO entries (rowno, date_line, name, affiliation, checkno, amount, total, notes) VALUES (:rowno, :date_line, :name, :affiliation, :checkno, :amount, :total, :notes)');
    $stmt->execute(array(':rowno' => . $value .), ':date_line' => htmlspecialchars($_POST['date_line']), ':name' => htmlspecialchars($_POST['name']), ':affiliation' => htmlspecialchars($_POST['affiliation']), ':checkno' => htmlspecialchars($_POST['checkno']), ':amount' => htmlspecialchars($_POST['amount']), ':total' => htmlspecialchars($_POST['total']), ':notes' => htmlspecialchars($_POST['notes'])));
    $affected_rows = $stmt->rowCount();
    // Log $affected_rows.
  }

} catch (PDOException $ex) {
  // Log error.
}}
$db = null;
?>
<?php

header("Content-type: application/vnd.fdf");
// read and store the data however you want
// reply with some FDF data
echo <<<RESPONSE
%FDF-1.2
1 0 obj
<< /FDF <<
/Status (Wham bam! File sent.)
>>
>>
endobj
trailer
<< /Root 1 0 R >>
%%EOF
RESPONSE;
?>

我不知道如何格式化 foreach so sql 循环。有什么想法

最佳答案

您应该使用 $value 而不是 $_POST:

foreach( $array as $key=>$value ) {
try {
  if (array_key_exists('name', $value)) {
    $stmt = $db->prepare('INSERT INTO entries (rowno, date_line, name, affiliation, checkno, amount, total, notes) VALUES (:rowno, :date_line, :name, :affiliation, :checkno, :amount, :total, :notes)');
    $stmt->execute(array(':rowno' => $value['rowno']), ':date_line' => htmlspecialchars($value['date_line']), ':name' => htmlspecialchars($value['name']), ':affiliation' => htmlspecialchars($value['affiliation']), ':checkno' => htmlspecialchars($value['checkno']), ':amount' => htmlspecialchars($value['amount']), ':total' => htmlspecialchars($value['total']), ':notes' => htmlspecialchars($value['notes'])));
    $affected_rows = $stmt->rowCount();
    // Log $affected_rows.
  }

} catch (PDOException $ex) {
  // Log error.
}}

关于php - PDO INSERT INTO 准备好的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26247195/

相关文章:

php - 我的 PHP PDO fetchAll() 代码返回一行而不是 MySql 列表上的所有结果

php - WordPress WP_Query 比较自定义字段中的日期

php - 登录 Symfony2 后维护语言环境

php - 通过表单向mysql提交阿拉伯语数据

php - 如何创建 MLM 表设计

php - 我需要清理数据库查询的结果吗?

php - 如何找到丢失的索引?

php - 在Mysql和PHP "Access denied for user '中编辑记录页面'@'localhost'到数据库 'linkyoutube''

php - Ajax 请求在我的 php 代码中不起作用

php - 使用php将复选框的所有可能存储在mysql数据库中