PHP未将POST数据插入数据库


PHP Not inserting POST data into database

我正试图将自动POST请求中的数据插入数据库,但它没有插入数据,也没有抛出任何错误。(错误日志中没有)代码:

<?php
function getBetween($content,$start,$end){
$r = explode($start, $content);
if(isset($r[1])) {$r = explode($end, $r[1]);
return $r[0]; } return''; }
file_put_contents("outputfile.txt", file_get_contents("php://input"), FILE_APPEND );
$cip = $_POST['ipaddr'];
$cid = $_POST['id'];
$conn = mysqli_connect('localhost', '********', '*******');
$sql = "INSERT INTO slso (asid, ips) VALUES ('$cid', '$cip')";
mysqli_query($conn, $sql); mysqli_close($conn);
?>

outputfile.txt的内容如下:

ipaddr=192.168.0.4&id=8&endipaddr=***.**.230.62&id=8&end

但是,从未将任何数据插入到数据库中。我是不是犯了一个我没有注意到的简单错误?

在5.6之前的PHP版本中,只能从php://input读取一次。

来自手动

在PHP 5.6之前,一个用php://input只能读取一次;流不支持查找操作。但是,根据SAPI的实现,可能会打开另一个php://input流并重新开始读取。只有在保存了请求正文数据的情况下,才可能执行此操作。通常,POST请求是这种情况,但其他请求方法(如PUT或PROPFIND)则不然。

作为变通方案,您可以从php://input:中提取这些值

$post = file_get_contents("php://input");
file_put_contents("outputfile.txt", $post, FILE_APPEND );
parse_str($str, $output);
$cip = $output['ipaddr'];
$cid = $output['id'];

另一件事是,您的连接只有3个参数。mysqli_需要4。

  • http://php.net/manual/en/function.mysqli-connect.php

完成后,执行mysqli_query($conn, $sql) or die(mysqli_error($conn));