MySQL从PHP://插入多行
我从这篇HTTP文章中获得了准确的数据: rowno=1.00000000&date\u line=2014-10-07&name=Dan%20志愿者和附属机构=企业&checkno=1701&amount=20025.00000000&total=20250.00000000¬es=&date\u存款=&rowno=2.00000000&date\u line=2014-10-07&name=Harper%20Lee&Attachment=Enterprise%20B&checkno=1702&amount=225 然后这个代码就可以处理了MySQL从PHP://插入多行,php,mysql,Php,Mysql,我从这篇HTTP文章中获得了准确的数据: rowno=1.00000000&date\u line=2014-10-07&name=Dan%20志愿者和附属机构=企业&checkno=1701&amount=20025.00000000&total=20250.00000000¬es=&date\u存款=&rowno=2.00000000&date\u line=2014-10-07&name=Harper%20Lee&Attachment=Enterprise%20B&checkno=1
<?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 post有两条记录行/重新计数计数始终不同,但仅插入最后一行的数据。需要所有行。我要尝试一下这一行……我想现在发生的是,您只是按原样处理回帖,因此第一个行号被跳过,而第二个行号覆盖了第一个行号。如果你收到了一个字符串形式的帖子,你需要通过preg_match或explode将其拆分,这样你就可以通过你的尝试将其循环 在你的字符串上尝试这个类。此类将根据行将字符串拆分为数组。然后,您需要获取生成的数组$insert,然后处理sql循环中的每个数组……这有意义吗
class ProcessPost
{
public static function Split($value = '',$splitVal = 'rowno=')
{
if(!empty($value)) {
// Explode by row values
$rows = explode($splitVal,$value);
$rows = array_filter($rows);
if(is_array($rows) && !empty($rows)) {
foreach($rows as $_row => $querystring) {
parse_str($splitVal.$querystring,$_array[]);
}
foreach($_array as $row_key => $row_val) {
if(empty($row_val))
unset($_array[$row_key]);
}
return $_array;
}
}
}
}
$test = 'rowno=1.00000000&date_line=2014-10-07&name=Dan%20Volunteer&affiliation=Enterprise&checkno=1701&amount=20025.00000000&total=20250.00000000¬es=&date_deposit=&rowno=2.00000000&date_line=2014-10-07&name=Harper%20Lee&affiliation=Enterprise%20B&checkno=1702&amount=225';
$insert = ProcessPost::Split($test);
第一行是rowno=1.00000000到rowno=2.00000000,这是第二行,对吗?谢谢,Rasclatt。我将如何实施你的建议?我做了一些修改。这是一个更好的设置。如果你被困在这里,请告诉我。再次感谢!更像是被埋葬了。我甚至把$test=file\u get\u co替换掉了ntentsphp://input; 我想象下一个是类似$array=array$insert和foreach$array as$key=>$value???的东西,$insert将返回一个数组,然后,是的,您循环通过该数组并应用sql插入。我将写出它供您尝试。我也会记下它来告诉你我的建议。