【问题标题】:My code fails to send the data to my mysqli database, yet it produces no errors我的代码无法将数据发送到我的 mysqli 数据库,但它没有产生任何错误
【发布时间】:2019-01-06 10:04:28
【问题描述】:

我正在尝试制作的这个页面有很多问题。我阅读了很多帖子,但它 仍然没有我需要的答案。如果有人可以帮助我,我将不胜感激。 此表单的数据不会发送到数据库,但不会产生任何错误。

我之前的代码版本出现访问错误。然后我修复了它,它现在没有产生错误。
但它仍然不发送数据。 我将在这里粘贴我的代码。
提前致谢。

<form method="POST" action="#">
    Nome:
    <input type="CHAR" name="nome">
    <br><br>E-Mail:
    <input type="text" name= "email">
    <br><br>Mensagem:<br>
    <textarea name="comentario"></textarea>
    <br><br>
    <input type="submit" value="Enviar">
    <input type="reset" value="Limpar">
</form>
<hr>

<?php
$date = date_default_timezone_set('America/Sao_Paulo');
$con=mysqli_connect("localhost","root","","bdcomentarios");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
        {
$insert = mysqli_query($con,"INSERT INTO tbcomentarios('nome')");
        }
{
$insert = mysqli_query($con,"INSERT INTO tbcomentarios('email')");
    }
    {
$insert = mysqli_query($con,"INSERT INTO tbcomentarios('comentario')");
    }
    {
$insert = mysqli_query($con,"INSERT INTO             
tbcomentarios('date_default_timezone_get('Y/m/d')'");
    }
$sql = "SELECT * FROM tbcomentarios ORDER BY id desc";
$executar=mysqli_query($con, $sql);
while( $exibir = mysqli_fetch_array($executar)){
    echo $exibir['data'];
    echo "</br>";
    echo $exibir['nome'];
    echo "</br>";
    echo $exibir['email'];
    echo "</br>";
    echo $exibir['comentario'];
    echo "</br><hr>";
}
?>

【问题讨论】:

    标签: php mysql forms


    【解决方案1】:

    在将它们输入数据库之前,您必须将使用 post 方法传递的变量取走。请尝试以下操作:

    1) 这让 PHP 表单自己提交。

    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
    Nome:
    <input type="CHAR" name="nome">
    <br><br>E-Mail:
    <input type="text" name= "email">
    <br><br>Mensagem:<br>
    <textarea name="comentario"></textarea>
    <br><br>
    <input type="submit" value="Enviar">
    <input type="reset" value="Limpar">
    </form>
    

    这部分保留变量并将它们插入数据库中(假设您在表 tbcomentarios 中有列 data、nome、email、commentario)

    <?php
    $nome = "";
    $email = "";
    $comentario = "";
    
    //keep the variables
    if(isset($_POST["nome"]))
         $nome = $_POST["nome"];
    if(isset($_POST["email"]))
         $email = $_POST["email"];
    if(isset($_POST["comentario"]))
         $comentario = $_POST["comentario"];
    
    //current date
    $data = date("Y/m/d");
    
    $con=mysqli_connect("localhost","root","","bdcomentarios");
    // Check connection
    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    
    
    $sql_insert="INSERT INTO tbcomentarios (data, nome, email, comentario) 
    VALUES('$data', '$nome', '$email', '$comentario')";
    
    //check the insert into DB
    if (mysqli_query($con,$sql_insert)) {
         echo "New record created successfully";
    } else {
         echo "Error: " . $sql . "<br>" . mysqli_error($con);
    }
    
    
    $sql = "SELECT * FROM tbcomentarios ORDER BY id desc";
    $executar=mysqli_query($con, $sql);
    while( $exibir = mysqli_fetch_array($executar)){
        echo $exibir['data'];
        echo "</br>";
        echo $exibir['nome'];
        echo "</br>";
        echo $exibir['email'];
        echo "</br>";
        echo $exibir['comentario'];
        echo "</br><hr>";
    }
    

    【讨论】:

    • 非常感谢。这行得通。我只需要使用它并使用 $date = date_default_timezone_set('Asia/Tokyo'); 设置时区但现在我有另一个问题。现在,当我运行该页面时,它会自动发送一个空白条目。我试过像这样使用 isset if(isset($_POST["nome"], $_POST["email"], $_POST["commentario"], $_POST["data"]));因此,如果它为空,它不会发送表单,并且我的数据库的变量都设置为 NOT NULL,但它以某种方式接受数据并存储并显示它。再次,非常感谢。
    • 只需给提交按钮起一个名字,例如
    • 然后将我发布的所有 php 代码放入这个 if 语句中: if(isset($_POST['submit']){} 这意味着:如果按下按钮,则认为论坛已提交,获取值并填充数据库
    • 谢谢。我这样做了,但是它停止显示旧的 cmets,所以我关闭了表单的 php,进行了另一个 php 划分,并复制了 echo 部分(从 $sql 到代码的最后一个字符)并粘贴到其中,并且现在它按预期工作。感谢您帮助我,希望您有愉快的一天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    相关资源
    最近更新 更多