$\u未将POST插入数据库-PHP MySQL
这是我的HTML表单,用于将数据添加到表中:$\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
<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。使用给定的