PHP不将POST数据插入数据库

时间:2015-04-09 00:51:57

标签: php mysql post mysqli

我正在尝试将数据从自动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

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

1 个答案:

答案 0 :(得分:3)

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

From the manual

  

在PHP 5.6之前,使用php://输入打开的流只能读取一次;流不支持搜索操作。但是,根据SAPI实现,可能会打开另一个php://输入流并重新开始读取。只有在保存了请求正文数据后才能执行此操作。通常,这是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。

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