Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP将记录插入MYSQL数据库_Php_Mysql - Fatal编程技术网

用PHP将记录插入MYSQL数据库

用PHP将记录插入MYSQL数据库,php,mysql,Php,Mysql,希望是一个简单的解决办法,但整个周末一直困扰着我 我有一个简单的脚本连接到MYSQL数据库,然后使用HTML表单中的字段将新记录输入数据库 脚本运行得很好,但我没有在脚本中定义数据库列,只是使用insert into,然后将值引用为HTLM表单字段 工作 mysql_select_db("golfingdb", $con); mysql_query("INSERT INTO Test1 VALUES ('$_POST[firstname]','$_POST[lastname]','$_POS

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

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

脚本运行得很好,但我没有在脚本中定义数据库列,只是使用insert into,然后将值引用为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);
但是,当我在代码中引用数据库字段名称时,它无法生成新记录

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

任何帮助都将不胜感激

干杯


Paddy

如果列名包含空格,则需要在列名周围加上反勾

(`First Name`,

可能是两个字的列名。在引用列时,可以使用“First Name”或类似的名称

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

试试这个

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

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

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

应使用Backstick characters
`
来转义表名和列名。应使用单引号字符
'
来转义字符串值

在第二个示例中,表名用单引号而不是反斜杠转义。此外,字段名根本不会转义,这可能会导致包含空格的第一个字段名出现问题

(`First Name`,
正确的形式是:

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

还需要注意的是,PHP的
mysql\uu
函数已被弃用。强烈建议使用《我已经尝试过了》中讨论过的备选方案之一,但它不会增加我的数据库。代码如下:

<?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();
?>

您正在使用并且应该使用。你也很容易受到现代API的影响,因为它会让你更容易使用。我已经更改了数据库字段,所以它不包含空格,脚本现在可以正常工作了。谢谢,汉克斯,我尝试过这个,但运气不好,但正是空间造成了问题。我在数据库中重命名了字段,但没有空格,现在脚本运行良好。我稍后将尝试此操作,看看它是否能解决字段名称中空格的问题。我认为我可以稍后切换到其他选项,对吗?大致相同的PHP代码,但使用不同的运算符和参数?我有一点压力,需要完成一个工作模型,因此学习所有新函数的时间很短。
mysql\uz
函数已被弃用,但目前仍在工作。它们被认为是不安全的,将来可能会从PHP中完全删除。因此,虽然你可以在短期内使用它们,但这只是一种不好的做法,在不远的将来肯定会被打破。此外,这篇文章已经发表4年了,你的答案在4年前是/可能是有用的,在2017年,使用该代码是非常危险的