向MySQL添加数据将不起作用

向MySQL添加数据将不起作用,mysql,Mysql,我不知道我做错了什么: <?php include "dbopen.php"; $fnamn = $_POST["fnamn"]; $enamn = $_POST["enamn"]; $email = $_POST["email"]; mysqli_query($dbconnect,"INSERT INTO personer (Fornamn, Efternamn, Email) VALUES ($fnamn, $enamn, $email)"); ?> include标记工作得很好,

我不知道我做错了什么:

<?php
include "dbopen.php";
$fnamn = $_POST["fnamn"];
$enamn = $_POST["enamn"];
$email = $_POST["email"];

mysqli_query($dbconnect,"INSERT INTO personer (Fornamn, Efternamn, Email) VALUES ($fnamn, $enamn, $email)");
?>

include标记工作得很好,因为我可以在phpmyadmin中创建数据并让它写出数据,但添加不起作用。也没有收到任何错误信息


提前谢谢

在这些字符串值周围加引号,如

VALUES ('$fnamn', '$enamn', '$email')

至少,通过mysqli_real_escape_string运行您的POST值,

在哪里初始化$dbconnect?您使用的是什么版本的PHP。。。那你为什么不清理帖子输入呢!吓人,吓人,吓人,因为这是SQL注入攻击有缺陷代码的定义。您的代码容易发生SQL注入尝试使用准备好的语句或至少正确地避开用户输入。是的,我知道。我和dbs总是有麻烦,我的朋友经常这样做。所以我想先让它起作用,这样我就可以忘记它。你在使用mysqli。。好的现在使用参数化查询。这将神奇地解决其中至少一个问题。请不要使用mysqli\u real\u escape\u字符串。海报使用的是mysqli,因此可以访问适当的参数化查询-事实上,使用这样的查询将完全消除引用的需要…我怎么没有尝试过…感觉如此愚蠢…干杯@请不要听从这个建议。它鼓励糟糕的SQL实践。请参阅快速介绍。请原谅@user2864740。你有什么基准来判断什么是对的什么是错的?去告诉PHP从代码中删除所有非参数化的查询函数。参数化查询不是灵丹妙药。今天我仍然可以使用mysql为您编写代码,mysql和所谓的参数化查询一样安全。请停止鼓励使用mysql\u real\u escape\u字符串和手动SQL字符串构建。Mate停止说教,实际提交一点示例代码来让该人员继续。我曾经链接过相应的问题。接受的答案包括一个很好的小例子,使用mysqli和足够的关键字来查找适用的API。
<?php
include "dbopen.php";

$fnamn = mysqli_real_escape_string($dbconnect, $_POST["fnamn"]);
$enamn = mysqli_real_escape_string($dbconnect, $_POST["enamn"]);
$email = mysqli_real_escape_string($dbconnect, $_POST["email"]);

$sql = "INSERT INTO `personer` (`Fornamn`, `Efternamn`, `Email`) VALUES ('".$fnamn."', '".$enamn."', '".$email."');";

if (mysqli_query($dbconnect, $sql) === true) {
    printf('Success');
} else {
    print_f(mysqli_error($dbconnect));
}

?>