我真的是PHP新手,需要一些帮助。
我想建立一个论坛,您可以在其中上传帖子和图片。
现在,我需要代码和MySQL数据库之间的连接帮助。
我在下面的表中使用MySQL:
主表:“帖子”
我想发布从用户那里获得的数据,但我真的不知道问题出在哪里。
这是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中抛出
非常感谢。
答案 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错误。