$\u未将POST插入数据库-PHP MySQL

$\u未将POST插入数据库-PHP MySQL,php,mysql,post,insert,Php,Mysql,Post,Insert,这是我的HTML表单,用于将数据添加到表中: <div class="TTWForm-container"> <div id="form-title" class="form-title field"><h2>ახალი სტატია</h2></div> <form enctype="multipart/form-data" action="index.php?link=addart" class="TTWForm ui-sor

这是我的HTML表单,用于将数据添加到表中:

<div class="TTWForm-container">
<div id="form-title" class="form-title field"><h2>ახალი სტატია</h2></div>
<form enctype="multipart/form-data" action="index.php?link=addart" class="TTWForm ui-sortable-disabled" method="post"> 
<div id="field2-container" class="field f_100 ui-resizable-disabled ui-state-disabled">
<label for="title">სათაური</label>
<input name="title" id="title" required="required" type="text">
</div>
<div id="field10-container" class="field f_100 ui-resizable-disabled ui-state-disabled">
<label for="post">
სტატია
</label>
<textarea rows="15" cols="40" name="post" id="post" required="required"></textarea>
</div>
<div id="form-submit" class="field f_100 clearfix submit">
<input value="დამატება" type="submit" id="submit">
</div>
</form>
</div>

ახალი სტატია
სათაური
სტატია
加工

if (isset($_POST['title'])) {$title = $_POST['title'];}
if (isset($_POST['post'])) {$post = $_POST['post'];}

<?php
if (isset($title) && isset($post))
{
/*can add post */
$insert = "INSERT INTO article ('title','post') VALUES ('$title','$post')";
$result = mysqli_query($connect,$insert);

if ($result == 'true') {echo "<p>post is added.</p>";}
else {echo "<p>post is not added.</p>";}
}
else
{
echo "<p>Fill all fields.</p>";
}
?>
if(isset($\u POST['title']){$title=$\u POST['title'];}
if(isset($_POST['POST']){$POST=$_POST['POST'];}

布尔比较

首先,检查你的比较
mysqli_query
返回布尔值
true
false
,而不是字符串'true'或'false'。而不是:

if ($result == 'true')
使用

甚至:

if ($result)
调试查询

接下来,检查查询本身是否有错误。作为Fred,您应该使用反勾号来标记列名,而不是单引号:

INSERT INTO article (`title`,`post`)
考虑记录mysqli_错误的输出,或者尝试回显您的查询并对数据库手动运行它。您可能会发现他们的查询有一个隐藏的语法或数据错误,这在代码中并不明显

发布的价值

接下来,检查从
$\u POST
获取的值。
$\u POST['POST']
设置了吗?它有有用的价值吗

数据库连接


最后,检查数据库连接本身。你真的有联系吗?您有关于连接尝试的调试日志记录或输出吗?

布尔比较

首先,检查你的比较
mysqli_query
返回布尔值
true
false
,而不是字符串'true'或'false'。而不是:

if ($result == 'true')
使用

甚至:

if ($result)
调试查询

接下来,检查查询本身是否有错误。作为Fred,您应该使用反勾号来标记列名,而不是单引号:

INSERT INTO article (`title`,`post`)
考虑记录mysqli_错误的输出,或者尝试回显您的查询并对数据库手动运行它。您可能会发现他们的查询有一个隐藏的语法或数据错误,这在代码中并不明显

发布的价值

接下来,检查从
$\u POST
获取的值。
$\u POST['POST']
设置了吗?它有有用的价值吗

数据库连接

最后,检查数据库连接本身。你真的有联系吗?您是否有关于连接尝试的调试日志记录或输出?

因此只需更改:

else
{
echo "<p>post is not added</p>";
}
else
{
echo“未添加帖子”

”; }
致:

else
{
echo“MySQL错误:”.mysqli_错误($connect)。“

”; }
所以只需更改:

else
{
echo "<p>post is not added</p>";
}
else
{
echo“未添加帖子”

”; }
致:

else
{
echo“MySQL错误:”.mysqli_错误($connect)。“

”; }
这是为您准备的声明

$link = new MySQLi('localhost','username','password','database');

if(isset($_POST['title'],$_POST['post'])&& $_POST['title'] !="" && $_POST['post'] !=""){
        $title = $_POST['title'];
        $post = $_POST['post'];
        if($query = $link->prepare('INSERT INTO article (title,post) VALUES(?,?)')){
            $query->bind_param('ss',$title,$post);
            $query->execute();
            $query->close();
            echo 'Success!';
        }else{
            echo 'Failure!';
        }
    }else{
        echo 'You missed a field!';
}

这是为你准备的声明

$link = new MySQLi('localhost','username','password','database');

if(isset($_POST['title'],$_POST['post'])&& $_POST['title'] !="" && $_POST['post'] !=""){
        $title = $_POST['title'];
        $post = $_POST['post'];
        if($query = $link->prepare('INSERT INTO article (title,post) VALUES(?,?)')){
            $query->bind_param('ss',$title,$post);
            $query->execute();
            $query->close();
            echo 'Success!';
        }else{
            echo 'Failure!';
        }
    }else{
        echo 'You missed a field!';
}


看到您的标签,我想知道您试图保存在数据库中的编码类型。您对mysql表使用了正确的编码吗?检查服务器上的错误日志可能是一个好的开始…我使用UTF8\u general\u ci存储格鲁吉亚字符。存储的数据是格鲁吉亚语。执行以下操作:
$result=mysqli_query($connect,$insert)或die(mysqli_error($connect)),您将看到SQL错误。我也不明白你为什么要使用
if(isset($title)&&isset($post))
你已经在这么做了。@Fred ii-正如我所说,你可以注入的任何东西都不会使它有效。所以我宁愿使用“易受攻击”而不是“易受攻击”。;-)看到您的标签,我想知道您试图保存在数据库中的编码类型。您对mysql表使用了正确的编码吗?检查服务器上的错误日志可能是一个好的开始…我使用UTF8\u general\u ci存储格鲁吉亚字符。存储的数据是格鲁吉亚语。执行以下操作:
$result=mysqli_query($connect,$insert)或die(mysqli_error($connect)),您将看到SQL错误。我也不明白你为什么要使用
if(isset($title)&&isset($post))
你已经在这么做了。@Fred ii-正如我所说,你可以注入的任何东西都不会使它有效。所以我宁愿使用“易受攻击”而不是“易受攻击”。;-)另外,OP将他们的专栏视为值
('title','post')
,我个人认为OP接受了错误的答案。这几乎涵盖了所有内容。此外,OP将其列视为值
('title','post')
我个人认为OP接受了错误的答案。这几乎涵盖了所有内容。记录错误,但不要打印它们。这很可能会成为生产代码,并且可能会泄露仅供开发人员使用的敏感内部信息。我认为@David在寻求帮助,如何调试他的代码并找出错误。不是关于如何创建好的应用程序。我更喜欢一步一步地做一件事,如果你不这样做的话-提供你的答案,提供所有最好的pretice和bind参数,bin result,继续。为什么你喜欢评论我的答案而不是原来的问题?只是洪水?TBH,这更适合作为评论。再仔细检查一遍OP的代码。还有更重要的错误需要处理。如OP的问题和给出的一些答案所述。谢谢@KimAlexander。在使用给定的指令后,我发现了错误。在这里使用单引号是错误的=>
$insert=“插入文章('title','post')…”记录错误,但不要打印错误。这很可能会成为生产代码,并且可能会泄露仅供开发人员使用的敏感内部信息。我认为@David在寻求帮助,如何调试他的代码并找出错误。不是关于如何创建好的应用程序。我更喜欢一步一步地做一件事,如果你不这样做的话-提供你的答案,提供所有最好的pretice和bind参数,bin result,继续。为什么你喜欢评论我的答案而不是原来的问题?只是洪水?TBH,这更适合作为评论。再仔细检查一遍OP的代码。还有更重要的错误需要处理。如OP的问题和给出的一些答案所述。谢谢@KimAlexander。使用给定的