您好我正在开发PHP中的聊天支持,其中涉及2个数据库,用于编译已添加的所有会话,现在每个表都以2个用户命名,另一个用户用于存储聊天两者之间的日志是msgid和发送者以及接收者的时间戳
另一个数据库用于存储第二个数据库的详细信息现在我有点卡在如何在创建表之后插入消息,这是我的脚本到目前为止
//inserting chat conv good for 1 week
$sql4="INSERT INTO thread(msgid, startedby, participant, creation_date) VALUES ( :msgid ,:startedby,:participant,NOW())";
$prep=$con->prepare($sql4);
$prep->bindParam(':msgid',$msguser,PDO::PARAM_STR);
$prep->bindParam(':startedby',$us1_o,PDO::PARAM_STR);
$prep->bindParam(':participant',$us2_o,PDO::PARAM_STR);
$prep->execute();
//creation of table based on both involve parties
$con2 = new PDO("mysql:host=". DB_host .";dbname=db", DB_username , DB_password);
$con2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$con2->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$q="CREATE TABLE ". $user1 . $user2 ."chat_log (
modurator varchar(100) NOT NULL,
client varchar(100) NOT NULL,
tstamp int(10) NOT NULL,
msgid varchar(250) NOT NULL,
PRIMARY KEY (msgid)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
CREATE TABLE ". $user1 . $user2 ."chat_conversation (
msgid varchar(250) NOT NULL,
username varchar(250) NOT NULL,
conversation varchar(250) NOT NULL,
tstamp int(10) NOT NULL,
PRIMARY KEY (msgid)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
try {
$con2->exec($q) or die($con2->errorInfo());
echo "Success";
//insert of chat conv
} catch (PDOException $e) {
$e->getMessage();
}
$sql5="INSERT INTO ". $user1 . $user2 ."chat_conversation(msgid, username,conversation,tstamp) VALUES ( :msgid ,:username,:msg,NOW())";
$prep2= $con2->prepare($sql5);
$prep2->bindParam(':msgid',$msguser,PDO::PARAM_STR);
$prep2->bindParam(':username',$usern,PDO::PARAM_STR);
$prep2->bindParam(':msg',$txt,PDO::PARAM_STR);
$prep2->execute();
}
为什么我想在新创建的时候插入数据的原因是因为我的老板希望它是实时的,这就是为什么使用ajax调用某些变量的原因
这是使用类btw
调用的答案 0 :(得分:0)
你需要一些推送功能。 PHP不支持Web套接字或类似的东西,但您可以使用为您执行此操作的服务。执行此类操作的两个服务示例是http://pusher.com和http://pubnub.com。