如果有人在其他地方问我这个问题,我会觉得很糟糕,我环顾四周,但找不到确切的情况。基本上,我在服务器上创建并填充了一个sqlite3db,我正在尝试制作一个连接到php文件的html表单,用户可以在其中输入一些数据,然后将其插入到表中。
表单运行良好并且连接良好,问题在于PHP本身。
以下是我的php文件的代码:
<?php
try{
$db = new PDO('sqlite:mydatabase.db');
$title = $_POST['title'];
$subtitle = $_POST['subtitle'];
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
$sql = "INSERT INTO stop (title,subtitle,latitude,longitude) VALUES (:title,:subtitle,:latitude,:longitude)";
$q = $db->prepare($sql);
$q->bindParam(':title',$title);
$q->bindParam(':subtitle',$subtitle);
$q->bindParam(':latitude',$latitude);
$q->bindParam(':longitude',$longitude);
$q->execute();
echo 'inserted 1 row';
}
catch(PDOException $e){
echo 'exception:' . $e->getMessage();
}
?>
正如您所看到的,表单提交了四个属性:标题、副标题、经度和纬度。然后将这些属性准备到查询中,并在数据库上执行。代码成功地在服务器上运行,甚至回声它插入了一行,但是数据库没有显示任何更改。
我真的很感激你的帮助,我已经用头撞了一段时间了。
谢谢你!
事实证明,在$q->execute();
之后添加print_r($q->errorInfo());
后,问题就清楚了,即数据库处于只读状态。经过深入研究,我发现PDO的一个细微之处是,在所有权限模式下,你必须同时拥有数据库和它所在的文件夹。一旦改变,一切都很完美!