【发布时间】:2017-03-28 16:34:38
【问题描述】:
我正在尝试使用用户输入到 html 表单中的数据将数据添加到我的数据库中。这是我的代码:
<?php
error_reporting(E_ALL);
$conn = new mysqli(/* private infos hidden on stackoverflow */);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if(isset($_POST['submitButton'])) {
$getName = $_POST['name'];
$query = "INSERT INTO data ('name') VALUES ('$getName')";
if ($conn->query($query) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $query . "<br>" . $conn->error;
}
$conn->close();
}
?>
<html>
<form method="post">
Name: <input type="text" name="name"><br>
<input type="submit" name="submitButton">
</form>
</html>
我得到这个错误:
错误:INSERT INTO data ('name') VALUES ('', '', '', '', '')
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在第 1 行的“名称”) VALU 附近使用的正确语法
** 我已经尝试过的:**
-
"INSERT INTO data ('name') VALUES ('$getName')";
-
"INSERT INTO data ('name') VALUES ($getName)";
-
"INSERT INTO data (name) VALUES ('$getName')";
-
"INSERT INTO 'data' ('name') VALUES ('$getName')";
-
"INSERT INTO data (name) VALUES ($getName)";
-
"INSERT INTO data (name) VALUES '$getName'";
感谢大家的帮助
【问题讨论】:
-
由于您刚刚学习,您可能希望现在从准备好的语句开始(在您学习错误的查询运行方式并需要重新学习之前)。您尝试运行查询的方式非常不安全,只是要求进行 SQL 注入攻击。请参阅:php.net/manual/en/mysqli.quickstart.prepared-statements.php 另请参阅:bobby-tables.com
-
为什么你的错误信息显示
VALUES ('', '', '', '', '')?您在此输入字段中究竟输入了什么?如果你只是输入一个名字,那么这个错误是没有意义的! -
名称是保留字。使用反引号
-
它只是一个关键字,不是保留的,所以不需要打勾。但也不痛!
-
“名称是保留字。使用反引号” - 不,
name不是保留字,它是“关键字” - dev.mysql.com/doc/refman/5.7/en/keywords.html - 两种不同的动物在这里。
标签: php mysql database phpmyadmin