如何使用php插入MySQL并回显它

时间:2019-01-24 10:05:39

标签: php mysql sql

我真的是PHP新手,需要一些帮助。

我想建立一个论坛,您可以在其中上传帖子和图片。

现在,我需要代码和MySQL数据库之间的连接帮助。

我在下面的表中使用MySQL:

主表:“帖子”

  1. post_data =这是来自用户的POST请求。
  2. 用户名=来自另一个主表:用户
  3. user_id =来自另一个主表:users
  4. post_id =自动。

我想发布从用户那里获得的数据,但我真的不知道问题出在哪里。

这是PHP代码:

<?php

session_start();
$MySQLdb = new PDO("mysql:host=127.0.0.1;dbname=forum", "root", "");
$MySQLdb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

 if(isset($_POST['msg'])){

     $post   = $_POST['msg'];

     $cursor = $MySQLdb->prepare("SELECT post_data FROM posts WHERE post=:posts_data");
     $cursor->execute( array(":post_data"=>$post) );
 }
$cursor = $MySQLdb->prepare("INSERT INTO posts (post) value (:post_data)");
$cursor->execute(array(":post_data"=>$post));?>

这是“ msg”的HTML代码(帖子输入):

div class="input-group">
                <input id="msg" type="text" method="POST" class="form-control" name="msg" placeholder="Write your message here...">
                <span class="input-group-addon"><button id="send_post">Send</button></span>
            </div>

这是我得到的错误:

  

注意:未定义的变量:在第15行的C:\ xampp \ htdocs \ forum \ main.php中发布

     

致命错误:未捕获的PDOException:SQLSTATE [42S22]:找不到列:   1054中的“字段列表”中的未知列“ post”   C:\ xampp \ htdocs \ forum \ main.php:15堆栈跟踪:#0   C:\ xampp \ htdocs \ forum \ main.php(15):PDOStatement-> execute(Array)#1   {main}在第15行的C:\ xampp \ htdocs \ forum \ main.php中抛出

非常感谢。

4 个答案:

答案 0 :(得分:0)

您的html都是错误的。

        <input id="msg" type="text" method="POST" class="form-control" name="msg" placeholder="Write your message here...">

该方法是表单标签上的属性,而不是输入。

<form action="/youraction" method="POST" />
<input id="msg" type="text" method="POST" class="form-control" name="msg" placeholder="Write your message here...">
</form>

PHP失败,因为未设置$_POST['msg']

答案 1 :(得分:0)

也许您的html表单的方法是get或...

更改 $_POST['msg'];$_REQUEST['msg'];

<?php

session_start();
$MySQLdb = new PDO("mysql:host=127.0.0.1;dbname=forum", "root", "");
$MySQLdb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $post   ="";
 if(isset($_REQUEST['msg'])){

     $post   = $_REQUEST['msg'];

     $cursor = $MySQLdb->prepare("SELECT post_data FROM posts WHERE post=:posts_data");
     $cursor->execute( array(":post_data"=>$post) );
 }
$cursor = $MySQLdb->prepare("INSERT INTO posts (post) value (:post_data)");
$cursor->execute(array(":post_data"=>$post));?>

答案 2 :(得分:0)

第15行是哪几行?是$cursor = $MySQLdb->prepare("INSERT INTO posts (post) value (:post_data)");

因为这样,您可能想找到一种设置$post变量的方法。看一下代码,您正在$post内设置if(){} statement,因此当它尝试执行以下行时:

$cursor = $MySQLdb->prepare("INSERT INTO posts (post) value (:post_data)");
$cursor->execute(array(":post_data"=>$post));?>

您的$post变量为空。

答案 3 :(得分:0)

“ INSERT INTO帖子(帖子)值(:post_data)”必须更改为“ INSERT INTO帖子(帖子数据)值(:post_data)”

请注意,根据表定义和定义的约束,可能会出现新的MySQL错误。