通过PHP在sqlite3db中插入多个表单属性


Inserting multiple form attributes into sqlite3 db through PHP

如果有人在其他地方问我这个问题,我会觉得很糟糕,我环顾四周,但找不到确切的情况。基本上,我在服务器上创建并填充了一个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的一个细微之处是,在所有权限模式下,你必须同时拥有数据库和它所在的文件夹。一旦改变,一切都很完美!