我确定这是一个非常明显的拼写错误,但我无法看到它。我试图使用PHP将使用POST从HTML表单中获取的数据插入到MySQL数据库中。 POST成功,但查询失败;我检查了表格,确保没有插入任何新内容。
这是用于运行查询的PHP代码:
if ($_POST) {
$username = "root";
$password = "root"; //ssh don't tell
$hostname = "localhost";
$dbhandle = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL");
$dbname = "asoiaf";
$tablename = "charlist";
$id = '3';
$bookIntroduced = $_POST['bookIntroduced'];
$pageIntroduced = $_POST['pageIntroduced'];
$forename = $_POST['forename'];
$surname = $_POST['surname'];
$oldSurname = $_POST['oldSurname'];
$alias = $_POST['alias'];
$title = $_POST['title'];
$pageIntroduced = $_POST['regnalNumber'];
// Below is the query that fails to execute.
$query = "INSERT INTO $tablename (
$id, $bookIntroduced, $pageIntroduced, $title, $forename, $surname, $oldSurname, $alias, $regnalNumber
)";
mysql_query($query) or die("Nah, I don't feel like being helpful.");
mysql_close($dbhandle);
}
以下是DESCRIBE命令给出的表的结构:
任何人都可以帮我确定问题吗?
另外,如果不清楚,我是PHP和SQL的新手。
答案 0 :(得分:3)
执行这样的SQL查询在许多方面都是不好的做法,尤其是因为它非常脆弱和不安全,但我认为如果添加VALUES
并引用字符串,它将起作用。
$query = "INSERT INTO $tablename VALUES (
'$id', '$bookIntroduced', '$pageIntroduced', '$title', '$forename', '$surname', '$oldSurname', '$alias', '$regnalNumber'
)";
我建议不要这样做,我只是因为它是工作代码的最短路径而给出了这个答案。始终为表和列命名(INSERT INTO mytable (col1, col2) VALUES (:val1, :val2)
),并将准备好的语句与mysqli一起使用。