来自PHP的MySQL INSERT INTO:// INPUT多行

时间:2014-10-07 01:13:07

标签: php mysql

我有来自此HTTP POST的数据(确切):

  

rowno = 1.00000000&安培; date_line = 2014年10月7日和安培;名称=丹%20Volunteer&安培;所属=企业&安培; checkno = 1701&安培;量= 20025.00000000&安培;总= 20250.00000000&安培;笔记=安培; date_deposit =安培; rowno = 2.00000000&安培; date_line = 2014年10月7日和安培;名称=哈珀%20Lee&安培;所属=企业%20B&安培; checkno = 1702&安培;量= 225

然后这个代码要处理

<?php

file_get_contents("php://input");

$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/wonder:bread;dbname=loaf', 'root', '');
  }catch(PDOException $ex){
      die(json_encode(
          array('outcome' => false, 'message' => 'Unable to connect.')
          )
      );
  }
};

try {
  if (array_key_exists('name', $_POST)) {
    $stmt = $db->prepare('INSERT INTO entries (name, affiliation) VALUES (:name, :affiliation)');
    $stmt->execute(array(':name' => htmlspecialchars($_POST['name']), ':affiliation' => htmlspecialchars($_POST['affiliation'])));
    $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;
?>

此http帖子有两条记录(行/重新计数总是不同),但只插入最后一行的数据。需要所有行。

1 个答案:

答案 0 :(得分:0)

我要刺伤这一个....我认为发生的事情是你只是按原样处理回复帖,所以第一个rowno被跳过(而不是第二个{ {1}}覆盖了第一个)。如果您将该帖子作为字符串收回,则需要将其分为rownopreg_match(),以便您可以使用explode()将其分开。

在字符串上尝试此类。此类将根据行将字符串拆分为数组。然后你需要得到结果数组try然后处理你的$insert循环中的每个数组......这有意义吗?

sql