我正在编写 Facebook 登录脚本,但遇到了麻烦,因为我不知道是否需要 beginTransaction()、prepare()、execute() 和 commit()。
这是我的代码;
<?php
session_start();
$MemberData = $_REQUEST['json'];
$db = new PDO("mysql:host=xxxxxxxx;dbname=xxxxx", 'xxxxxxxxxx', 'xxxxxxxx');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$db->beginTransaction();
$query = $db->query("INSERT INTO `subscribers` (`facebook_id`,`first_name`,`last_name`,`email`) VALUES (:faceid, :first_name, :last_name, :email)");
$sth = $db->prepare($query);
$sth->execute(array(
":faceid" => $MemberData['id'],
":first_name" => $MemberData['first_name'],
":last_name" => $MemberData['last_name'],
":email" => $MemberData['email'])
);
$Lastid = $db->lastInsertId();
$_SESSION['user_id'] = $Lastid;
$db->commit();
} catch (PDOException $e) {
//$db->rollBack();
die($e->getMessage());
}
问题是这不是将数据插入数据库。但是,如果我将值设置为字符串并注释掉以 $sth 开头的大部分代码并将值设置为“字符串”数据,则脚本会插入数据。
任何关于我在这里错的想法将不胜感激,我提前感谢你。