调用PHP程序
我打算用PHP来创建一个具有以下功能的程序:
1.接收一个值
2.查询数据库并进行检查
3.返回检查结果
首先,我创建了2和3的功能。
它按照我所想的那样运行。
■recieve.php
请使用以下的中国做为本地语言改写这个句子, 只需要一个选项 : 定义(DB_USERNAME)的值为dbuser。
定义(DB_PASSWORD)的值为r5b2Wisd。
$key1 = “key1_A99”;
$key2 = “key2_A99”;
/*
$params = json_decode(file_get_contents(‘php://input’), true);
$key1 = $params[‘key1’];
$key2 = $params[‘$key2’];
*/
Translation in Chinese:
$key1 = “key1_A99”;
$key2 = “key2_A99”;
/*
$params = json_decode(file_get_contents(‘php://input’), true);
$key1 = $params[‘key1’];
$key2 = $params[‘$key2’];
*/
尝试 {
\$db = new PDO(DSN, DB_USERNAME, DB_PASSWORD);
\$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} 捕获(DOException \$e) {
result(9, ‘无法连接到数据库’);
}
尝试{
//如果在数据库中有注册,则进行检查通过
$stmt = $db->prepare(“select count(*) cnt from test where key1 = :key1 and key2 = :key2”);
$stmt->execute([
‘:key1’ => $key1,
‘:key2’ => $key2
]);
$row = $stmt->fetch();
if ($row[‘cnt’] == 1) {
result(0, ‘已经注册’);
}
//如果没有在数据库中注册,并且key1的注册数量超过2个,则报错
$stmt = $db->prepare(“select count(*) cnt from test where key1 = :key1”);
\$stmt->execute([
‘:key1’ => \$key1
]);
\$row = \$stmt->fetch();
if (\$row[‘cnt’] >= 2) {
result(9, ‘already exists’);
}
//如果数据库中没有注册,并且key1的注册数量少于2个,则在数据库中注册并检查通过
\$sql = “insert into test(key1, key2) values(:key1, :key2)”;
\$stmt = \$db->prepare(\$sql);
\$stmt->execute([
‘:key1’ => \$key1,
‘:key2’ => \$key2
]);
result(0, ‘registered’);
} catch (Exception \$e){
result(9, \$e->getMessage());
}
函数结果(\$result_code, \$result_message) {
头部(“Content-Type: application/json; charset=UTF-8”);
\$result = 数组(‘result’ => \$result_code, ‘message’ => \$result_message);
输出 json_encode(\$result);
终止;
}
接下来,我创建了一个名为1的功能(calling)。
■send.php
‘key2’ => ‘key2_A99’
);
\$options = array(‘http’ => array(
‘method’ => ‘POST’,
‘header’ => “Content-type: application/json\r\n”,
‘content’ => json_encode(\$data)
));
\$options = stream_context_create(\$options);
\$contents = file_get_contents(\$url, false, \$options);
header(‘Content-type: application/json’);
echo \$contents;
调用send.php会导致错误。
PHP警告:file_get_contents(http://192.168.33.10:8000/recieve.php)失败打开流:HTTP请求失败!位于/home/vagrant/license/send.php的第13行。
由于无论如何切换recieve.php中参数部分的注释都会导致错误,我认为这个调用本身就有问题。
但是因为无法调用,所以无法完成接收端的工作。
(如果接收端已经完成,我们可以确定是调用方式不正确,可以通过在网上搜索并进行调整来解决)
我意识到我在Web相关知识方面的严重不足。尽管连提问(或写作)的方式都不清楚,但还请您告诉我应该尝试什么来改善。
顺便说一句,交接的格式可以不是JSON。
编程语言也可以不是PHP。
不过,因为要做的事情很小,所以我并不打算过分夸张地使用框架之类的东西。