PHP更新MySQL,表单输入作为列名通过

PHP更新MySQL,表单输入作为列名通过,php,mysql,forms,Php,Mysql,Forms,所以我很抱歉,因为我觉得我问了很多愚蠢的问题。我边走边学,但要达到目的 我创建了一个基本的HTML表单,在前面的回答的帮助下,我完成了PHP和MySQL查询。但是,当我提交表单时,表单中的输入值显示为列名,而不是行中要更新的信息 简单来说,当提交表单时,如果输入将名字从James更改为Josh,则错误消息为: “更新记录时出错:'字段列表'中的未知列'Josh'” 我认为在下面的SQL查询中,它会将列名作为first_name,但这显然不会发生 <?php $servername = "l

所以我很抱歉,因为我觉得我问了很多愚蠢的问题。我边走边学,但要达到目的

我创建了一个基本的HTML表单,在前面的回答的帮助下,我完成了PHP和MySQL查询。但是,当我提交表单时,表单中的输入值显示为列名,而不是行中要更新的信息

简单来说,当提交表单时,如果输入将名字从James更改为Josh,则错误消息为:

“更新记录时出错:'字段列表'中的未知列'Josh'”

我认为在下面的SQL查询中,它会将列名作为first_name,但这显然不会发生

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

//Create variables
$first_name=$_POST['first_name'];
$last_name=$_POST['last_name'];
$ID=$_POST['ID'];

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 

$sql = "UPDATE Users SET first_name=$first_name, last_name=$last_name WHERE 
ID=$ID";

if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $conn->error;
}

$conn->close();
?>

我不懂PHP,但我怀疑您的问题在于您没有在更新声明中引用该值。因此,请尝试以下方法:

"UPDATE Users SET first_name='$first_name', last_name='$last_name' WHERE ID=$ID"

可能是重复的我读过了,但似乎没有涵盖我正在得到的问题。我的问题是表单输入正在更改SQL查询中的预期列名。因此,如果列名是first\u name,我想将其更新为Josh,它实际上是在查找列名Josh。在$first\u name和其他字段上没有引号。绳子应该用引号包起来你在开玩笑吗?哈哈,这是真的吗?非常感谢你!您的查询对于SQL注入是完全开放的!在谷歌搜索“php mysqli参数化语句”。