Php 这有什么问题?sql查询中的筛选或变量

Php 这有什么问题?sql查询中的筛选或变量,php,sql,Php,Sql,有人能告诉我我的错误在哪里吗 if (isset($_POST["name"], $_POST["value"], $_POST["pk"])) { $name = preg_replace("/[^a-zA-Z0-9]+/", "", $_POST["name"]); $value = preg_replace("/[^a-zA-Z0-9]+/", "", $_POST["value"]); $pk = preg_replace("/[^a-zA-Z0-9]+/",

有人能告诉我我的错误在哪里吗

if (isset($_POST["name"], $_POST["value"], $_POST["pk"])) {

    $name = preg_replace("/[^a-zA-Z0-9]+/", "", $_POST["name"]);
    $value = preg_replace("/[^a-zA-Z0-9]+/", "", $_POST["value"]);
    $pk = preg_replace("/[^a-zA-Z0-9]+/", "", $_POST["pk"]);

    if ($name === "char_name" || $name === "char_geschlecht" || $name === "char_rasse") {
        include_once 'mysqli.php';
        $verbindung->query("UPDATE `charakter` SET `{$name}` = '{$value}' WHERE `char_id` = '{$pk}'");
    } else {
        include_once 'mysqli.php';
        $verbindung->query("UPDATE `geldbeutel` SET `{$name}` = '{$value}' WHERE `geldbeutel_id` = '{$pk}'");
    }

}

我没有收到错误,因此无法正确调试它。我的问题是post数据正在发送,但查询无法正确执行。如果我在查询中将变量名替换为
$\u POST[“…”]
,它就会起作用。

我找到了它不起作用的原因。代码很好,但是变量
$name
包含的列名在我的数据库结构中有下划线,我忘记在
preg\u replace

中允许下划线,为什么您认为有错误?什么不起作用?您得到了什么错误?查询将不会执行。正在发送数据,如果我用$\u POST[“name”]替换$name部分,则查询工作正常,数据库更改完成。遗憾的是,我没有收到任何错误,所以我无法正确地调试它。我的朋友,Stackoverflow不适用于“伙计们,请验证我的代码”。不不要那样做。你需要把你的代码,写代码的细节,显示返回的错误,等等,所以。。。请重写你的问题。如果你只说
SET$name
而不是“SET
{$name}
”@PatrickMaciel:我没有错误,否则我可以很容易地修复它。关于这个问题,我应该写些什么?我不知道还有什么能帮上忙。