我正在使用MySQL后端开发PHP应用程序,并且有一个不幸的事件,我无法从PHP脚本中保存MySQL中的数据。没有错误或其他什么,但当我尝试使用phpmyadmin直接插入数据时,数据被保存。当我检查数据库引擎时...说 InnoDB ...我脑子里的东西告诉我把它改成 MyISAM 当我做的时候......它有效。我试着谷歌发生了什么但没有运气。有人可以解释发生了什么。我在这件事上使用PDO。
require("path/to/connection.php");
//sample userid
$userid = 10;
try{
$conn->beginTransaction();
$query = $conn->prepare("INSERT INTO mytable(userid) VALUES(:userid)");
$query->bindParam(":userid",$userid,PDO::PARAM_INT);
$query->execute();
}catch(PDOException $e){
$conn->rollBack();
echo $e;
}
答案 0 :(得分:1)
您正在开始交易,但从未提交过。由于MyISAM不支持事务,因此您不提交是无关紧要的,但InnoDB在您执行之前不会将数据写回。
你需要这样做:
try{
$conn->beginTransaction();
$query = $conn->prepare("INSERT INTO mytable(userid) VALUES(:userid)");
$query->bindParam(":userid",$userid,PDO::PARAM_INT);
$query->execute();
$conn->commit();
}catch(PDOException $e){
$conn->rollBack();
echo $e;
}
对于单个INSERT
语句,使用事务是没有意义的,所以你可以这样做:
try{
$query = $conn->prepare("INSERT INTO mytable(userid) VALUES(:userid)");
$query->bindParam(":userid",$userid,PDO::PARAM_INT);
$query->execute();
}catch(PDOException $e){
$conn->rollBack();
echo $e;
}