php - 将表单数据引用到 php 脚本并将其插入数据库

标签 php mysql forms email

好的,我到处都找过了。首先,我有一个表单,一个时事通讯,用户可以在其中输入他们的电子邮件。一旦他们点击提交,它就会检查一个 php 表单,该表单接受该电子邮件并将其输入到存储电子邮件的 SQL 数据库中。问题是提交表单时出现此错误

错误:INSERT INTO emails (email) VALUES (random@yahoo.com) 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 2 行的“@yahoo.com)”附近使用的正确语法

不知道为什么它不会将其放入数据库。表单代码为

 <section>
            <div class="mockup-content">
                <div class="morph-button morph-button-inflow morph-button-inflow-1">
                    <button type="button"><span>Subscribe to our Newsletter</span></button>
                    <div class="morph-content">
                        <div>
                            <div class="content-style-form content-style-form-4">
                                <h2 class="morph-clone">Subscribe to our Newsletter</h2>
                                <form action="scripts/mailer.php" method="post">
                                    <p><input type="text" class="button" id="email" name="email" placeholder="NAME@EXAMPLE.COM">
                                    <div>We promise, we won't send you any spam. Just love.</div>
    <input type="submit" class="button" id="submit" value="SIGN UP"></p>
                                </form>
                            </div>
                        </div>
                    </div>
                </div><!-- morph-button -->
            </div>
        </section>

这只是表单的html数据,php数据是

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mysql";
$email = ($_POST["email"]);


// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
 }

 $sql = "INSERT INTO emails (email)
  VALUES ($email)";

if ($conn->query($sql) === TRUE) {
  echo "New record created successfully";
 } else {
   echo "Error: " . $sql . "<br>" . $conn->error;
 }

$conn->close();
?>

谁能解释这是为什么?

最佳答案

在查询中绑定(bind)变量时,您应该使用标记 ('):

$sql = "INSERT INTO emails (email) VALUES ('$email')";

当您尝试绑定(bind)的变量的值为 int 时,不使用 tick 是可以的。

关于php - 将表单数据引用到 php 脚本并将其插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30751517/

相关文章:

PHP PDO 异常 : "SQLSTATE[HY093]: Invalid parameter number"

php - 异步 HTTP 调用后关闭连接

php - 如何将html存储在php变量中?

javascript - 运行 PHP 回显 Javascript

mysql - 选择至少包含搜索查询的行

mysql - 为 MySQL 中查询返回的每一行调用存储过程

mysql 仅当存在时更新 不插入

forms - Angular 2 表单验证,hasError 不是一个函数

jquery - laravel - 基于先前选择的动态下拉列表

php - 从 Drupal 形式的 check_plain() 中排除字符