Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果我';m使用AWS RDS将用户输入存储到数据库中?_Php_Mysql_Sql_Laravel_Debugging - Fatal编程技术网

Php 如果我';m使用AWS RDS将用户输入存储到数据库中?

Php 如果我';m使用AWS RDS将用户输入存储到数据库中?,php,mysql,sql,laravel,debugging,Php,Mysql,Sql,Laravel,Debugging,在使用AmazonRDS之前,我会在本地测试用户输入和端点(http://localhost/emails.php)其中的一个将位于我的htdocs文件夹中(我正在使用MAMP),因此我可以通过文本字段将用户输入存储在我的SQL数据库中,而不会出现问题 但现在我已经转到了AmazonRDS,我得到了一个新的端点,它成功地连接到MySQL工作台 我的问题是-我应该将包含连接到数据库、sql表等的所有信息的php文件存储在哪里?我希望它能够像使用RDS之前在本地工作一样工作 对于我刚才提到的所有内容

在使用AmazonRDS之前,我会在本地测试用户输入和端点(
http://localhost/emails.php
)其中的一个将位于我的
htdocs
文件夹中(我正在使用MAMP),因此我可以通过文本字段将用户输入存储在我的SQL数据库中,而不会出现问题

但现在我已经转到了AmazonRDS,我得到了一个新的端点,它成功地连接到MySQL工作台

我的问题是-我应该将包含连接到数据库、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将位于主机上的根文件夹中——htdocs、public或www.php

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


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

我明白了。但是除了你的观点之外,我在数据库中存储用户输入方面做得正确吗?我的想法是,我的php文件应该位于AWS提供的端点内的某个位置,就像我使用localhost所做的那样。我只是想知道我是否根据我的原始帖子中的代码理解了这个概念。PHP文件将存在于您的服务器上。$servername是放置AWS端点的位置。AWS端点是数据库的位置——但PHP文件将驻留在您的服务器/网站上。存储用户电子邮件的方法将成功——在安全性和数据验证方面存在一些问题。您可以使用filter_var确保输入电子邮件()。您应该使用mysqli“准备好的语句”来确保不会有人意外或故意攻击您的数据库(请参阅:),但我建议您首先启动并运行它,然后在知道代码正常工作时改进代码。让我们来看看。
<?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;
}

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