我是php的新手,所以如果问题太愚蠢,请原谅。
我试图使用mysqli在表格上插入数据。查询成功执行并返回插入的id。但数据未插入数据库表。
// Creating db connection
$dbObject = new DBHandler();
// Database operations
$query = "insert into `atmt_status` (taskdate, title, description, User_Id) values (?,?,?,?)";
$stmt = $dbObject->conn->prepare($query);
if(!$stmt)
{
die('Problem With Database');
}
$stmt->bind_param("ssss",$taskdate $title, $description, strtolower($userId));
$stmt->execute();
$stmt->close();
$insertId = mysqli_insert_id($dbObject->conn);
echo '<script type="text/javascript">alert('.$insertId.');</script>';
这成功执行并给出以下响应:
但数据未插入数据库表。
尝试:
我取代了?实际值并删除 $stmt->bind_param("ssss",$taskdate $title, $description, strtolower($userId));
结果:
成功执行,返回Id:59,数据库中没有插入数据。
尝试:
我检查了
mysqli_query($dbObject->conn, $query) or die('Failed to insert');
结果:
成功执行,返回Id:60,数据库中没有插入数据。
尝试:
我检查了
$dbObject->conn->query($query);
结果:
成功执行,返回Id:61,数据库中没有插入数据。
尝试:
直接使用MYSQL Querybrowser
结果:
成功执行,数据已插入ID为62的数据库。
尝试:
我在StackOverflow中检查了几乎所有类似问题的问题,并尝试了几乎所有答案。
结果:
没有任何改变,仍有相同的问题
过去2天我一直坚持这个问题,我尝试了很多方法,但都失败了。请帮助我,提前谢谢。
答案 0 :(得分:1)
最后我修好了。
在我的代码中,我将autocommit
设置为false
,这就是问题所在:
$dbObject->conn,->autocommit(FALSE);
我通过将上面的代码更改为:
来修复它$dbObject->conn,->autocommit(TRUE);
感谢a_horse_with_no_name,他的以下评论帮助我找到了问题。
我看到两个可能的原因:1)我没有在你的代码中看到提交 - 如果 您没有在自动提交模式下运行,更改不是 持续存在。 2)您可以看到可重复读取默认值的效果 用于检查数据的SQL客户端中的隔离级别。跑 在检查数据之前在客户端程序中提交或回滚。 - a_horse_with_no_name