首页 > 解决方案 > 如果我使用 AWS RDS 将用户输入存储到数据库中,我的 PHP 文件应该放在哪里?

问题描述

在使用 Amazon RDS 之前,我会在本地测试我的用户输入和我的终端节点 ( http://localhost/emails.php),终端节点 ( ) 将位于我的htdocs文件夹中(我正在使用 MAMP),因此我可以通过文本字段将用户输入存储在我的 SQL 数据库中没有什么问题。

但是现在我已经迁移到 Amazon RDS,我得到了一个成功连接到 MySQL Workbench 的新终端节点。

我的问题是 - 我应该在哪里存储这个包含连接到我的数据库、sql 表等的所有信息的 php 文件?我希望它能够像使用 RDS 之前在本地工作一样工作

我刚才提到的所有内容都有以下代码:

这是我的js文件:

import React, {Component} from 'react';
import axios from 'axios';

export default class ProductList extends Component {
    constructor(props) {
        this.addFormData = this.addFormData.bind(this);
    }

    addFormData(evt) {
        evt.preventDefault();
        const fd = new FormData();
        fd.append('myEmail', this.refs.myEmail.value);
        var headers = {
            'Content-Type': 'application/json;charset=UTF-8',
            // 'Host' : 'sdb.amazonaws.com'
            "Access-Control-Allow-Origin": "*"
        };
        axios.post("My AWS RDS Endpoint", fd, headers)
        .then(res => {
            alert(res);
        }).catch(err => {
            alert(err);
    });
    }

    render() {
        return (
            <React.Fragment>
                    <form>
                    <div className="col-xs-2 text-center">
                    <input type="email" id="Email" aria-describedby="emailHelp" placeholder="Enter email" ref="myEmail" />
                </div>
                    <button type="submit" className="submitEmail btn btn-primary" onClick={this.addFormData}>Submit</button>
                </form>
                </div>
            </React.Fragment>
        );
    }
}

这是我的 php 文件:

<?php
header("Access-Control-Allow-Origin: *");

$servername = "my host";
$username   = "my name";
$password   = "my pw";
$dbname     = "mydb";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO mydb.emails
VALUES ('".$_POST['myEmail']."')";

echo $sql;

if (mysqli_query($conn,$sql)) {
    $data = array("data" => "You Data added successfully");
    echo json_encode($data);
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

?>

这是我创建包含电子邮件的表的 SQL 查询:

CREATE TABLE mydb.emails(emails VARCHAR(200)); 
SELECT * FROM mydb.emails;

标签: phpmysqlsqllaraveldebugging

解决方案


本地系统上的http://localhost/ *.php 将位于主机的根文件夹中——htdocs、public 或 www。

axion.post() 应该指向那个 .php 文件,而不是 AWS 端点。

将您的 RDS 凭据放在公用文件夹下的文件夹中的单独文件中可能会更安全,以防由于某种原因出现以纯文本形式显示 PHP 的错误。至少如果您“要求”该文件,您不会意外暴露您的凭据。


推荐阅读