【发布时间】:2014-03-24 03:02:40
【问题描述】:
您好,我目前正在 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 调用的
【问题讨论】: