无法添加到数据库mysql

时间:2018-02-25 01:30:35

标签: php html mysql sql

我的表单添加到我的数据库时遇到问题。

我已经制作了表单和脚本但是在实现它们时遇到了麻烦。有什么想法吗?

表:

Image of table

以下是HTML表单:

<form method="post" id="form2" action="home.php?id=<?php echo "$user_id";?>">  </br>
    <h2>What would you like to ask? Rant away!</h2>
    <input type="text" name="title" placeholder="Write a title" size="92px"/>
    <textarea cols= "70px" rows="6px" name="content";>Description...</textarea><br/>
    <select name="topic">
        <option> Select Topic</option>
        <?php getTopics() ;?>
    </select>
    <input type="submit" name ="submitbtn" value="Post to Timeline"/>
</form>

<?php 
    insert_post();?>

这是函数 - 函数所在的文件,使用文件顶部的include命令包含在HTML文件中。

function insert_post(){
    if(isset($_POST['submitbtn'])){
        global $con;
        $title=$_POST['title'];
        $content=$_POST['content'];
        $topic=$_POST['topic'];

        $insert="INSERT INTO `posts` ( `user_id`, `topic_id`, `post_title`, `post_content`, `post_date`) 
        VALUES ('$user_id','$topic','$title','$content',NOW()) ";

        $run=mysqli_query($con, $insert);
        if($run){
            echo"<h3>Discussion posted</h3>";
        }
    }
}

编辑: 作为参考,单击提交时得到的错误是404,表示“找不到对象”。

编辑2: 表格图像显示该行称为pos_title,而我自己的代码则显示post_title。当编辑代码说pos_title时,仍然会出现同样的错误。

编辑3: 实施一些建议的更改后出现新错误:

New errors

4 个答案:

答案 0 :(得分:0)

$insert="INSERT INTO `posts` ( `user_id`, `topic_id`, `post_title`, `post_content`, `post_date`) 
    VALUES ('" . $user_id . "','" . $topic . "','" . $title . "','" . $content . "',NOW()) ";

试试这段代码。您应该使用.连接而不是在字符串中插入变量:

$run=mysqli_query($con, $insert);
if($run) {
    echo"<h3>Discussion posted</h3>";
} else {
    echo mysqli_error($con);
}

注意: 出于调试目的,您应该检查mysqli_error($con);是否有错误。

<form method="post" id="form2" action="home.php?id=<?php echo $user_id;?>">  </br>

当您回显变量时,不需要双引号。它是一个不是字符串的变量。

    <textarea cols= "70px" rows="6px" name="content">Description...</textarea><br/>

name="content"之后的分号也不应该存在。

答案 1 :(得分:0)

从函数中删除if(isset($_POST['submitbtn'])){并将其添加到表单上方:

if(isset($_POST['submitbtn'])){
    insert_post();
}

答案 2 :(得分:0)

  1. 将操作更改为action="home.php"
  2. 将此代码添加到表单中:

    <input value="<?php echo $user_id?>" type="hidden" name="user_id">
    
  3. 将此代码添加到insert_post功能:

    $user_id = (int)$_POST['user_id'];
    
  4. post_title替换为pos_title或更改您的表格。

  5. 您不需要'$user_id''$topic'中的引号,但MySQL仍会接受它。

答案 3 :(得分:0)

我要感谢大家的时间,精力和帮助。事实证明,在上一个表单中出现了比此表单大约400行的语法错误,在关闭它时我错了。所以我问的问题对你来说是无法解决的,因为事实证明共享的代码或多或少都没有问题。对于我的错误人员,我们非常抱歉,非常感谢你的帮助。这肯定教会我清理我的html文件,而不是让它们变得如此之大!