我正在从事一个项目,该项目将来自 Raspberry 的数据发送到 SQL 数据库,并且我正在使用“PHPMyAdmin”。我设法做了一些经验来检测错误的来源。我得出的结论是问题仍然存在于“request.post()”方法的 URL 中,该方法旨在读取我的 php 文件(服务器代码)。当我运行该程序时,我收到一条消息“在此服务器上找不到请求的 URL”。所以我的问题是:我应该在 URL 地址中提供什么?我应该把我的IP地址吗?还是只有 127.0.0.1 ?
服务器代码:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
// this is just to test whether the connection is established and the data was inserted into my table successfully. Indeed, when I pass these as values for my new inserted data. Everything works fine.
$var1=12;
$var2=133;
//But when I use these, my program doesn't work. Which means that the data wasn't sent by my python code
//$var1 = $_POST["var1"];
//$var2 = $_POST["var2"];
echo $var1;
echo $var2;
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO test (var1, var2) VALUES ($var1, $var2)";
if ($conn->query($sql) === TRUE)
{
echo "New record created successfully!";
}
else
{
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Python 代码:
import requests
var1=12
var2=13
datavars = {'var1': var1, 'var2': var2}
r = requests.post('http://localhost/Test/test.php, data=datavars') #PROBLEM HEEERE!!!Localhost??
print(r.text)
答案 0 :(得分:0)
在试用 Python 代码示例和部分 PHP 代码作为测试后,我认为问题可能与 Python 代码中引号的使用有关。
特别是,主要问题似乎与这一行有关(如您所见):
r = requests.post('http://localhost/Test/test.php, data=datavars')
这一行应该是这样写的,而不是:
r = requests.post('http://localhost/Test/test.php', data=datavars)
(看看 ''
标记是如何围绕 URL 的,但它们现在如何在 , data ...
部分之前结束?)
The related documentation for requests
还表明 POST 的格式应该具有类似的格式:
r = requests.post('https://httpbin.org/post', data = {'key':'value'})
如果您对 Python 代码进行更改,可能有助于解决您面临的问题。
这是我用来测试的代码(基于您的代码):
PHP 代码:
<?php
// ref: https://www.php.net/manual/en/reserved.variables.post
print_r($_POST);
?>
Python 代码:
import requests
var1 = 12
var2 = 13
datavars = {'var1': var1, 'var2': var2}
# ref: https://requests.readthedocs.io/en/master/user/quickstart/#custom-headers
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
r = requests.post('http://localhost/Test/test.php', data=datavars, headers=headers)
print(r.text)
Python 代码的输出(PHP 代码的结果):
Array
(
[var1] => 12
[var2] => 13
)