我正试图将自动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));