为了账号安全,请及时绑定邮箱和手机立即绑定

我的消息输入没有进入数据库

我的消息输入没有进入数据库

PHP
哆啦的时光机 2022-12-11 10:06:31
我想向朋友发送消息,但它不想进入我的数据库,但即使我使用 $_POST,它也会显示在 url 中。我得到了我的 currentuserID 和我的 recipientID(我需要发送给的人)因为我 var_dump 了这两个并且得到了两个 ID。我的 SQL 查询应该没有错我以为我已经与多个人核实过(但是当我在数据库中测试时它给出了一个错误。但是当我在其中放入另一个有效的查询时,它给出了同样的错误所以我不'不认为这是一个问题)。所以我不知道这里可能是什么问题..我的消息.php:<?phpsession_start();if (empty($_SESSION['user_id'])) {    header('Location: login.php');}//Hier mag enkel het gesprek te zien zijn tussen 2 users die met elkaar bevriend zijn//tabel buddies >buddyID1 & buddyID2include_once(__DIR__."/inc/header.inc.php");include_once(__DIR__."/classes/Message.php");include_once(__DIR__."/classes/User.php");$userArray = $_SESSION['user_id'];$userID = implode(" ", $userArray);$currentUser = $userID;//var_dump($_POST);$recipientID = implode(" ",$_POST);//om het getal terug te krijgen van de recipientIDecho "currentUser: ";var_dump($currentUser);echo ".  recipientID: ";var_dump($recipientID);//msg wordt in databank gestoptif(!empty($_POST['message'])){    $msg = new Message();    $msg->setUserID($currentUser);    $msg->setRecipientID($recipientID);    $msg->setMessage(htmlspecialchars($_POST['message']));    $msg->messageSchrijven();}//msg wordt afgedrukt/gereturned$msg2 = new Message();$messages = $msg2->messagePrint();?><!DOCTYPE html><html><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title></head><body>    <div>        <form action="" methd="post">        <h1>Je chat nu met <?php echo $recipientID ?></h1>            <input type="text" name="message">            <input type="hidden" name="recipientID" id="" value="<?php echo $recipientID?>">            <input type="hidden" name="senderID" id="" value="<?php echo $currentUser?>">            <div class="">                <button type="submit" class="btn" style="width: 90px">Send</button>            </div>        </form>    </div></body></html>
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

内爆

首先,我认为你误解了 implode 方法。在你的例子中$recipientID

$recipientID = implode(" ",$_POST); //om het getal terug te krijgen van de recipientID

必须包含类似“10 9 This is my Message”之类的内容,这不是 id。添加一些验证并将其更改为

$recipientID = $_POST['recipientID'];

你在 php.net 上找到了一些关于 implode 的信息

PDO 执行

如果您使用的是 PDO,则 execute 方法返回一个布尔值(在php.net PDP execute上搜索)。所以如果你不使用返回值,就这样使用

$statement->execute();

另外删除$result = $statement->fetchAll(PDO::FETCH_ASSOC);插入方法处的行。

错误

在 PDO之后execute()你可以使用

print_r($statement->errorInfo());

获取查询错误。您可以在此处获取更多信息

数据库

我们看不到您的数据库模式,是不是您违反了表的唯一键或字段类型?

HTML

从我的角度来看,我总是会像这样在变量名和 php 声明之间写空格

<input type="hidden" name="recipientID" value="<?php echo $recipientID; ?>" />


查看完整回答
反对 回复 2022-12-11
  • 1 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信