【问题标题】:Insert record into MYSQL database with PHP使用PHP将记录插入MYSQL数据库
【发布时间】:2017-02-15 21:51:30
【问题描述】:

希望是一个简单的解决方法,但整个周末一直困扰着我。

我有一个简单的脚本来连接到我的 MYSQL 数据库,然后使用 HTML 表单中的字段将新记录输入到数据库中。

脚本运行得很好,但我没有在脚本中定义数据库列,只是使用 insert into 然后引用 VALUES 作为 HTLM 表单字段。

工作

mysql_select_db("golfingdb", $con);

mysql_query("INSERT INTO Test1 
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[email]')");

mysql_close($con);

不工作

mysql_select_db("golfingdb", $con);

mysql_query("INSERT INTO 'Test1' (First Name, Surname, Email) 
VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[email]')");

mysql_close($con);

但是,当我在代码中引用数据库字段名称时,它无法创建新记录。

我对字段名称的拼写(包括大写字母)进行了三次检查,没有出现任何语法错误。

任何帮助将不胜感激。

干杯

稻田

【问题讨论】:

标签: php mysql


【解决方案1】:

如果名称中包含空格,则需要用反引号将列名括起来。

(`First Name`,

【讨论】:

  • 谢谢,我试过这个没有运气,但它是导致问题的空间。我在没有空格的情况下重命名了数据库中的字段,现在脚本工作正常
【解决方案2】:

也许是两个单词的列名。引用列时可以使用“名字”或类似名称。

你能发布 MySQL 给你的确切错误吗?

【讨论】:

  • 我已更改数据库字段,使其不包含空格,并且脚本现在可以正常工作。谢谢
【解决方案3】:

试试这个

$firstname=$_POST["firstname"];
$lastname=$_POST["lastname"];
$email=$_POST["email"];

mysql_query("INSERT INTO Test1('First Name', 'Surname', 'Email') 
VALUES ('$firstname','$lastname','$email')");

确保您已创建具有正确数据类型和长度的表结构。

【讨论】:

  • 谢谢,我稍后再试,看看是否能解决字段名称中的空格问题。
【解决方案4】:

支持字符`` 应该用于转义表和列名。应该使用单引号字符'' 来转义字符串值。

在您的第二个示例中,表名使用单引号而不是反引号进行转义。另外,字段名称根本没有转义,这可能会导致第一个包含空格的字段名称出现问题。

正确的形式是:

 mysql_query("INSERT INTO `Test1` (`First Name`, `Surname`, `Email`)
              VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[email]')");

还需要注意的是,PHP 的 mysql_ 函数已被弃用。强烈建议使用Why shouldn't I use mysql_* functions in PHP?中讨论的替代方法之一

【讨论】:

  • 我是否认为我可以稍后切换到替代方案?大致相同的 PHP 代码但具有不同的运算符和参数?我在完成一个工作模型方面有点压力,所以学习所有新功能的时间很短。
  • mysql_ 函数已被弃用,但目前仍在工作。它们被认为是不安全的,将来可能会完全从 PHP 中删除。因此,虽然您可以在短期内使用它们,但这只是一种不好的做法,并且在不久的将来肯定会中断。​​
【解决方案5】:

我已经尝试过了,但它并没有增加我的数据库。代码如下:

<?php

// Connecting to Ganoderma genome database
include('../utils/config.php');

// Inserting new data into the table
$sql = "INSERT INTO $var2 ('$column_id', '$column_name', '$column_seq') VALUES ('$_POST[id]', '$_POST[name]', '$_POST[seq]')";

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

$conn->close();
?>

生物信息学家, 艾泽克

【讨论】:

  • 这篇文章已有 4 年历史,您的回答在 4 年前/可能有用,在 2017 年使用该代码非常危险
猜你喜欢
  • 2015-05-21
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 2014-01-29
  • 2013-11-23
  • 1970-01-01
相关资源
最近更新 更多