javascript - 尽管出现成功消息,为什么用户输入不会进入数据库?

标签 javascript php sql reactjs debugging

我正在尝试将用户输入(应该是电子邮件地址)存储到我的数据库中,但尽管收到成功消息,但它似乎不起作用:

INSERT INTO mydb.emails VALUES (''){"data":"您的数据已成功添加"}

(您可以在 php 文件中我的代码的 if 语句中看到此消息)。

我怀疑我创建表的方式和/或我在 php 文件中使用 $sql 变量的方式有问题。

我有点碰壁了,想知道我做错了什么?

下面我有所需的所有信息。

这是我的 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("myEndPoint", headers, fd)
            .then(res => {
                alert(res.data.data);
            });
    }

    render() {
        let styles = this.state.modalVisible
            ? {display: "block"}
            : {display: "none"};
        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 innodb.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;

最佳答案

看起来您正在一个架构中创建表,然后尝试插入到另一个架构中的相同表中:

INSERT INTO innodb.emails

对比

SELECT * FROM mydb.emails

注意innodbmydb。您在两个不同的模式中是否有相同的表?也许您只是在错误的位置寻找数据?希望有帮助。

有关模式与数据库的更多信息,请查看 here .

关于javascript - 尽管出现成功消息,为什么用户输入不会进入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60022329/

相关文章:

javascript - 在 React.render() 中返回多个元素

javascript - 返回两个圆之间的 x,y 交点的 JavaScript 函数?

php - 针对多个 MYSQL 列查询 PHP 变量

PHP 与 OO PHP - 使用哪一个?

javascript - 如何使用 Ajax 和 PHP 将复选框值传递给文本输入?

sql - 级联左外连接

javascript - 无法访问对象中的对象数组

javascript - 应用某些 css 样式后,fileupload click 事件未正确触发(在 IE 8 上)

php - 如何将此查询转换为 SQL SERVER

SQL 查询顺序错误,不知道为什么