【发布时间】:2015-07-29 01:15:16
【问题描述】:
我有一个使用 php 和 mysql 的静态聊天应用程序,这是在聊天框中显示消息的代码
$sql="SELECT id,msg,time,msg.from,msg.to from msg WHERE (msg.from='".$_SESSION["username"]."' OR msg.from='".$_SESSION["tousermessage"]."') AND (msg.to='".$_SESSION["tousermessage"]."' OR msg.to='".$_SESSION["username"]."') ORDER BY time";
$ex=$conn->prepare($sql);
$ex->execute();
echo "<div class='text-wrap'>";
while($result=$ex->fetch(PDO::FETCH_ASSOC))
{
if ($result['from']==$_SESSION["username"])
{
echo "<div class='message-view' >";
echo "<b class='name'>".$_SESSION["username"]."</b></br>";
echo "<p class='subject'>".$result["msg"]."</p><p class='time'>".$result["time"]."</p>";
echo "</div>";
}
else
{
echo "<div class='message-view' style='background-color: rgb(216, 236, 244);'>";
echo "<b class='name'>".$_SESSION["tousermessage"]."</b><br>";
echo "<p class='subject'>".$result["msg"]."</p><p class='time'>".$result["time"]."</p>";
echo "</div>";
}
if($result['to']==$_SESSION['username'])
{
$sqlupdate="UPDATE msg SET readmsg=1 WHERE id=".$result['id']." and msg='".$result["msg"]."'";
$ex1=$conn->prepare($sqlupdate);
$ex1->execute();
}
}
echo "</div>";
有时会显示异常:
SQLSTATE[HY093]:参数号无效:未绑定任何参数。
消息被插入到 msg 表中,但在显示消息期间发生错误。错误随机发生在发送方或接收方或双方。我找不到模式或它发生的原因!
【问题讨论】:
-
您提到插入后会发生这种情况,但您发布的代码不包含任何
INSERT语句... -
对不起!更正了!
-
您应该添加诊断输出以显示导致失败的命令。但是请注意,您有一个更大的问题 - 您的代码容易受到 SQL 注入的影响。你应该改用prepared statements。