插入查询在PHP中失败
我肯定这是一个明显的打字错误,但我看不出来。我正在尝试使用POST将来自HTML表单的数据插入到使用PHP的MySQL数据库中。POST工作成功,但查询失败;我已经检查了表格,确保没有插入任何新内容 以下是用于运行查询的PHP代码:插入查询在PHP中失败,php,mysql,sql,sql-insert,Php,Mysql,Sql,Sql Insert,我肯定这是一个明显的打字错误,但我看不出来。我正在尝试使用POST将来自HTML表单的数据插入到使用PHP的MySQL数据库中。POST工作成功,但查询失败;我已经检查了表格,确保没有插入任何新内容 以下是用于运行查询的PHP代码: if ($_POST) { $username = "root"; $password = "root"; //ssh don't tell $hostname = "localhost"; $dbhandle = mysql_co
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);
}
下面是descripe命令给出的表的结构:
有人能帮我找出这个问题吗
另外,如果不清楚,我对PHP和SQL是新手。这样做SQL查询在很多方面都是不好的做法,不仅因为它非常脆弱和不安全,而且我认为如果添加值并引用字符串,它会起作用
$query = "INSERT INTO $tablename VALUES (
'$id', '$bookIntroduced', '$pageIntroduced', '$title', '$forename', '$surname', '$oldSurname', '$alias', '$regnalNumber'
)";
我建议不要这样做,我给出这个答案只是因为这是工作代码的最短路径。始终将您的表和列命名为插入mytable col1,col2值:val1,:val2,并使用mysqli的预处理语句。PHP的mysql_uuAPI很久以前就被弃用了Drawberry,也许我有一个旧版本,我能够在PHP中使用mysql_u命令成功地使用SELECT查询。我应该使用什么来代替?您是否看到错误消息?如果是,那是什么?哦,我猜我应该使用mysqli。出于某种原因,我认为这是不推荐的。请使用带参数的预处理语句。将这些参数绑定到输入值。要获得有用的错误消息,您至少应该使用diemysql\u error之类的工具。那我们的朋友奥布莱恩呢……明白了。现在我将接受你们的建议,尝试编写更好的代码:。我需要学习准备好的声明和mysqli和PDO,哦,天哪,这个学习曲线需要攀岩设备。一些关键点:1当新列添加到表charlist时,此INSERT语句将失败,或者当列的顺序更改时,此INSERT语句将出现意外行为。最佳做法是在插入mytab col1、col2值中列出列。。。。2 SQL注入漏洞,mysql接口的最佳实践是使用mysql\u real\u escape\u string函数。3更好的最佳实践是使用准备好的语句和带有PDO或mysqli接口的绑定变量。4动态创建SQL文本时,echo或printf或vardump SQL文本字符串用于调试+1以获得更好的最佳实践:。mysqli和PDO的区别是什么?