【问题标题】:Php wont input data into databasephp不会将数据输入数据库
【发布时间】:2017-08-15 03:16:01
【问题描述】:

所以我试图从我的表单提交中获取我的数据以放入 mysql 数据库,但每当我提交表单时,它都会给我这个错误:错误:INSERT INTO form_submissions(ID, first, @ 987654329@, phone, class) 值 ([value-1],[value-2],[value-3],[value-4],[value-5])

现在这是我的 PHP 代码:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "form_database";

$value = $_POST['first'];
$value1 = $_POST['last'];
$value2 = $_POST['phone'];
$value3 = $_POST['class'];

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

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

$sql = "INSERT INTO `form_submissions`(`ID`, `first`, `last`, `phone`,
`class`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5])";

if ($conn->query($sql) === TRUE) {
echo "Submitted Successfully";
} else {``
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

$conn->close();
?>

【问题讨论】:

标签: php mysql forms mysqli xampp


【解决方案1】:

假设 ID 是自动递增的,而其他的都是文本,

 $sql = "INSERT INTO `form_submissions`(`first`, `last`, `phone`,
 `class`) VALUES ('$value','$value1','$value2','$value3')";

【讨论】:

  • ID 是自动递增的,其他是文本是的,改成那个,但仍然提示我错误:错误:插入到 form_submissions(first,last,phone,@ 987654326@) VALUES ('Anna','brown','07666435756','Big band sound') 表 'form_submissions' 是只读的
【解决方案2】:

您的查询应该是这样的:

INSERT INTO `form_submissions`(`first`, `last`, `phone`, `class`) 
VALUES ('John','doe', '98564', 'SOMECLASS');

检查: 回显 $sql 查询并在 phpmyadmin 中调试它。
注意:如果您启用了 AUTO_INCREMENT,则可以忽略该列的数据馈送。它会自动完成它的工作。

安全提示-> 要防止 SQLi 注入,请查看 post

【讨论】:

【解决方案3】:

有两件事不对。

首先你要给出 5 个字段(ID、First、last、phone、class) 而且您的帖子中只有 4 个变量。如果在数据库中将列设置为自动递增,我认为您不需要在插入时发送 ID,因此不要为 ID 字段发送值。

您的变量未正确插入到查询中。 [value-1] 并不意味着 $value1 变量将自动注入其中。 这可以通过很多方式完成 我会给你一个简单的解决方案,(但对于真正的网站来说这将是一个糟糕的解决方案)。简单的解决方案是:

$sql = "INSERT INTO `form_submissions`(`first`, `last`, `phone`,`class`) VALUES (`$value`,`$value1`,`$value2`, `$value3`)";

这不好的原因是:您在查询中直接输入发布数据,现在可以使用 SQL 注入。您需要在将帖子数据插入查询之前对其进行转义。或者更好的是不要使用“mysqli”,而是使用 PDO。 可以在这里找到一个很好的 PDO 示例 https://www.w3schools.com/php/php_mysql_insert.asp

我希望这会有所帮助。

【讨论】:

  • 完成此操作并提示错误:错误:INSERT INTO form_submissions(first, last, phone, class) VALUES ('".Anna."','".brown."','". 07666435756.”', '”.Big band sound.”') 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 '��".Anna."','".brown."',''' 附近使用正确的语法
  • 引号出了点问题。所以我会尝试解决这个问题,你很快就会看到一个编辑
  • 因为我的拼写太差了,所以在我过去之前用 word 来更正我的拼写。但是 word 将单引号更改为其他符号。我删除了双引号并将单引号更改为正确的
【解决方案4】:

您的 SQL 显然是错误的。它应该看起来像这样:

$sql = "INSERT INTO `form_submissions`(`ID`, `first`, `last`, `phone`,
`class`) VALUES ($value1,$value2,$value3,$value4,$value5)";

字段 ID 应为 auto_increment。如果是,则无需向其传递值。

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多