【问题标题】:html text form with php isn't inserting into MySQL server带有php的html文本表单未插入MySQL服务器
【发布时间】:2015-09-09 10:46:44
【问题描述】:

我正在编写代码,该代码会生成<textarea> 供用户输入内容,但除了“请包含一些内容”之外,它没有给我任何输出,这就是如果框中没有任何内容的意思。即使<textarea> 中有内容,也会出现这种情况,甚至不会说“post fail”,如果它无法插入数据库,这就是它的意思。

我在问是否有人可以查看我是否忽略了包含某些内容,或者我的代码是否有问题。

<?php
session_start();
require('connect.php');
if(@$_SESSION["name"]){
    //echo "welcome ".$_SESSION['name'];
 ?>
  <html>
 <link rel="stylesheet" type="text/css" href="styles.css" />
<head>
<title> Welcome to faecesbook</title>
</head>
<?php include('header.php'); ?>
    <form action="post.php" method="POST">
        <br / >
        <br / >
        <br / >
        <br / >
    <center>
        <br/> 
        <br/>
        Type your post here:<br/>(160CharLimit)<br/>
        <textarea style="resize: none;  width: 800px; height: 100px;" name="con" maxlength="160">
       </textarea>
                     <br />
        <input type="submit" name="submit" value="Post" style="width: 800px;" >
    </center>   
    </form>
<body>
</body>
</html>

<?php       
$content = @$_POST['con'];
$post_date = date("d-m-y");


if(isset($_POST['submit'])){
    if($content){
        if($query = mysqli_query($conn, "INSERT INTO post(`postID`, `userID`   , `post_date` , `in_reply_to`, `postContent` ) 
        VALUES ('','".$_SESSION["userID"]."','".$post_date."','','".$content."')") )
            echo "post successful";
        }else{
            echo "post fail";
}   

    }else{
        echo "Please include some content";
    }
  }

  ?>

【问题讨论】:

  • 在这里查看我的答案。 stackoverflow.com/questions/32470932/… 。希望它有所帮助:)
  • 我刚刚看了你的回答,你回答的哪一部分对我有帮助?我找不到它
  • 最后一部分。让我简要介绍一下:)
  • 好吧,我还是很困惑
  • 您也可以将语句构造为单独的字符串并将其回显以能够检查它,甚至尝试直接在 mysql 数据库的 phpmyadmin 中运行该语句以验证该语句是否有效

标签: php html mysql form-submit


【解决方案1】:

您的代码中缺少大括号

if(@$_SESSION["name"]){
    //echo "welcome ".$_SESSION['name'];

应该阅读

if(@$_SESSION["name"]){
    //echo "welcome ".$_SESSION['name'];
}

if($query = mysqli_query($conn, "INSERT INTO post(`postID`, `userID`   , `post_date` , `in_reply_to`, `postContent` )
    VALUES ('','".$_SESSION["userID"]."','".$post_date."','','".$content."')") ) // <--- here
            echo "post successful";
        }else{
            echo "post fail";
}   

使其可读性也有助于减少错误

$query = mysqli_query($conn, "INSERT INTO post(`postID`, `userID`   , `post_date` , `in_reply_to`, `postContent` )
    VALUES ('','".$_SESSION["userID"]."','".$post_date."','','".$content."')");

if ($query){
    echo "post successful";
}else{
    echo "post fail";
}   

【讨论】:

    【解决方案2】:

    试试这个代码。它应该可以工作。

    <?php
    session_start();
    require('connect.php');
    if(@$_SESSION["name"]){
        //echo "welcome ".$_SESSION['name'];
     ?>
      <html>
     <link rel="stylesheet" type="text/css" href="styles.css" />
    <head>
    <title> Welcome to faecesbook</title>
    </head>
    <?php include('header.php'); ?>
        <form action="post.php" method="POST">
            <br / >
            <br / >
            <br / >
            <br / >
        <center>
            <br/> 
            <br/>
            Type your post here:<br/>(160CharLimit)<br/>
            <textarea style="resize: none;  width: 800px; height: 100px;" name="con" maxlength="160">
           </textarea>
                         <br />
            <input type="submit" name="submit" value="Post" style="width: 800px;" >
        </center>   
        </form>
    <body>
    </body>
    </html>
    
    <?php       
    $post_date = date("d-m-y");
    if(isset($_POST['submit'])){
        if(isset($_POST['con']) && $_POST['con'] != ''){
               $content = @$_POST['con'];
                if($query = mysqli_query($conn, "INSERT INTO post(`postID`, `userID`   , `post_date` , `in_reply_to`, `postContent` ) 
                VALUES ('','".$_SESSION["userID"]."','".$post_date."','','".$content."')") )
                echo "post successful";
        }else{
                echo "post fail";
        }   
    
    }else{
            echo "Please include some content";
    }
    }
    
      ?>
    

    【讨论】:

    • if(isset($_POST['con']) && $_POST['con'] != ''){ } 这会检查文本中的空白字段。
    • 虽然这是一种更好的写作方式,但并没有什么不同。
    • 代码对我来说很好用。我已经评论了 connection.php 和 header.php 包含。还评论了“if(@$_SESSION["name"])”。发布功能运行良好。您需要提供其他详细信息,以便我为您提供帮助。
    【解决方案3】:

    我看到你的代码将提交的数据发送到另一个页面,我通过print_r($_POST)检查了它

    我将&lt;form action="post.php" method="POST"&gt; 更改为&lt;form action="" method="POST"&gt; 并尝试了它,如果您在此处提交的代码不是“post.php”,请执行此操作。

    所以这意味着您的插入查询有问题。所以尝试这种插入数据的 PDO 方式。我想建议你以下简单的 pdo 插入

        $dbhost = "localhost";
        $dbname = "mydatabase";
        $dbusername = "root";
        $dbpassword = "mypppasss";
        //connection string
        $link = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbusername,$dbpassword);
    

    在 if($content) 中放入以下代码并尝试

    $statement = $link->prepare("INSERT INTO post(userID,post_date,postContent)
        VALUES(:inp1,:inp2,:inp3,:inp4)");
    $statement->execute(array(
        inp1=>$_SESSION["userID"],
        inp2=>$post_date,
        inp4=>$content
    ));
    

    已编辑

    将此代码添加到表单提交页面,以查看发布的数据进行调试。

    if($_POST){
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
    }
    

    已编辑

    注意:@用于隐藏错误,防止显示错误 消息。这并不意味着没有错误。删除@进行调试

    已编辑 将您的整个插入查询部分更改为此并尝试

    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    
    $sql = "INSERT INTO post(userID,post_date,in_reply_to,postContent)
    VALUES (".$_SESSION['userID'].",".$post_date.",'',".$content.")";
    
    if (mysqli_query($conn, $sql)) {
        echo "inserted";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
    
    mysqli_close($conn);
    

    【讨论】:

    • 嗯,感谢您的帮助。但这也没有用。似乎“if($content){”部分被完全跳过,其中包括 mysql_query。因为它没有提出查询失败的错误,所以它甚至没有尝试过。
    • 这一切都在一个 php 文件中吗?
    • 以上代码都在一个php文件中,它通过一个单独的文件'connect.php'连接。
    • 我不知道我做错了什么。因为我在论坛网站上使用它来分配任务,并且我有一个名为“register.php”的页面,人们可以输入他们的信息并创建一个用户,它工作正常,可以毫无顾虑地插入数据库。我用完全相同的方法来做到这一点,但它不会这样做。
    • 可能只是我.. 但是你什么时候可以写 @$_POST 和 @$_SESSION ? .. 而不仅仅是 $_POST 等?
    【解决方案4】:

    这是错误的。 我有两组&lt;?php ?&gt;,代码中的第一组包含require('connect.php');,第二组也需要它。

    <?php       
    require('connect.php'); <<<<<------ NEEDED TO ADD THIS
    $content = @$_POST['con'];
    $post_date = date("d-m-y");
    $userID = mysqli_query($conn,"SELECT userID FROM users WHERE name = '".$_SESSION['name']."'");
    
    if(isset($_POST['submit'])){
        if($content){
            if($query = mysqli_query($conn, "INSERT INTO post(`postID`, `userID` , `post_date` , `in_reply_to`, `postContent` ) 
            VALUES ('','".$userID."','".$post_date."','','".$content."')") )
                echo "post successful";
            }else{
                echo "post fail";
    }   
    
        }else{
            echo "Please include some content";
    }
    }
    
    ?>
    

    这就是我认为有问题的代码。现在它会给我一个错误,说 SQLI 查询不成功,这意味着它至少正在尝试该部分,而之前没有。

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 2014-06-21
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多