PHP Insert,无法查看值

PHP Insert,无法查看值,php,Php,我正在尝试将表单数据插入数据库,但我不断得到: 错误:插入目标表单(名称、doa)值(,) 您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取第2行中使用的正确语法(接近“)” 代码如下: <?php $name = $_POST["Patient Name"]; $doa = $_POST["Date of Assessment"]; // Create connection $conn = new mysqli("localhost","username",

我正在尝试将表单数据插入数据库,但我不断得到:

错误:插入目标表单(名称、doa)值(,) 您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取第2行中使用的正确语法(接近“)”

代码如下:

<?php
$name = $_POST["Patient Name"];
$doa = $_POST["Date of Assessment"];

// Create connection
$conn = new mysqli("localhost","username","pw","db");
// Check connection
if ($conn->connect_error) {
    die("Connection error.");
}

$sql = "INSERT INTO objective_form (name, doa)
VALUES ($name, $doa)";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

这里有什么问题

编辑:
我已经编辑了代码,完成了您的所有建议,但它仍然不起作用,尽管使用了准备好的语句,并且使用了建议的代码,仍然会显示错误消息。

不确定这是否是问题的根源,但它是一种很好的做法,您应该使用准备好的语句,如下所示:

$sql = "INSERT INTO objective_form (name, doa) VALUES (?, ?)";
$stmt = $link->prepare( $sql );
$stmt->bind_param( 'ss', $name, $doa);
$stmt->execute();
那么我要做的是看看它是否成功:

if($stmt->affected_rows > 0){
echo 'works';
} else {
echo 'didnt work';

警告:您完全可以使用参数化的预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。问题是您没有向脚本发送任何数据。如果启用了错误报告,您可能会看到未定义索引的通知。但是,即使您在POST中传递了一些数据,它仍然不起作用,因为您没有使用准备好的语句,SQL也会崩溃。虽然这是一个非常好的建议,但它并没有解决主要问题,即POST值为空。代码应该在使用前检查帖子中是否发送了任何内容。因此,可能a:if(isset($_POST['Patient Name']){do something;}POST数据永远不会为空,它用于一个特殊的基于web的应用程序中,该应用程序不允许最终用户直接访问URL,提交的表单使用HTML要求所有字段都被占用。而且,攻击/注射对我来说不是问题,出于上述原因,它将在现场本地服务器上运行,不会连接到互联网,只供我自己和其他2人使用,所以我不担心这一点。