无法通过PHP的PDO插入SQLite数据库

请帮助看看是什么错误......(我测试的数据库连接是罚款)

<?php $user_name=$_POST['user_name']; $password=$_POST['password']; $dbh=new PDO('sqlite:./db/user.db') or die("fail to connect db"); try{ $stmt = $dbh->prepare("INSERT INTO user_info VALUES (?, ?)"); $stmt->bindParam(1, $a); $stmt->bindParam(2, $b); $a=$user_name; $b=$password; $stmt->execute(); } catch(PDOException $e) {echo $e->getMessage();} ?>

--------------解决方案-------------

我有足够的时间与评论@DerrickCoetzee讨论后重新考虑这个答案。 事实是,答案实际上可能解决一些服务器上这个问题的唯一途径。 我曾建议给到数据库中,这固然不安全普遍的写入权限。 究其原因,我发现,为什么这是我能有唯一的解决办法是,我的服务器已禁用的PHP写访问。 PHP是不能作出新的文件,我无法改变数据库的所有者Apache或“nobody”,没有root权限,这使得一个更好的解决方案是不可能的。

从本质上讲,我的服务器已经锁定了PHP,使得它只能写如果每个人都可以写。 在我看来,这是一个糟糕的服务器设置,而导致这一安全风险和@Derrick表明,一个SQLite数据库可能只能被用于私人用途或访问仅服务器。 有些系统没有设置为充分利用这一安全。 如果您发现PHP有没有写访问,你不必在机器的root访问权限,应考虑您的系统管理员联系或切换到MySQL,如果它是可用的。

话虽这么说,我找到下面的解决方案,以便快速,原型解决方案非常方便,当数据库不敏感,或将只有一小组选定的人才能知道。


我以前的答案:

我今天有这个相同的问题! 我非常新的PHP和SQLite,但隆隆一起。 突然间,我打从缺乏插入这个庞大的路障(一天没有进展)到我的SQLite数据库由问题的海报描述。 这里的区别因素是, 没有错误消息或异常,只是虚假回报,如果你把执行语句到一个if子句。

于是,我终于能够找出一种方式来获得的插入工作,但我不是100%肯定,如果它是安全与否。 如果你认为有更好的办法,我会很感激任何意见。

主要的问题是,你试图让你的用户写信给你的文件系统上的文件。 但是,默认的文件夹和文件,只有读为外人进入。 因此,你需要给你的两个数据库(的user.db)和它的文件夹(./db)写访问别人。

所以,你需要去的目录,然后输入:

chmod 777 ./db
chmod 766 ./db/user.db

这解决了这个问题对我来说,我希望它可以帮助你出去了。 我不知道是否有更好的方法或没有,但它似乎相当合理。

当你结合你的PARAMS $a$b不存在。

试试这个:

$stmt->bindParam(1, $user_name);
$stmt->bindParam(2, $password);

要绑定一个$和$ b为参数定义他们。

$user_name=$_POST['user_name'];
$password=$_POST['password'];
$a=$user_name;
$b=$password;

try{
$stmt = $dbh->prepare("INSERT INTO user_info (user_name, password) VALUES (?, ?)");
$stmt->bindParam(1, $a);
$stmt->bindParam(2, $b);
$stmt->execute();
}
catch(PDOException $e) {echo $e->getMessage();}

其实,有没有真正的需要先分配值$ USER_NAME和$密码。 只需将其分配到美元和$ b第一。

[编辑SQL包括列名]

试试这样说:

$stmt = $dbh->prepare("INSERT INTO user_info VALUES (?, ?)");
$data = array($user_name, $password);
$stmt->execute($data);

分类:php 时间:2015-03-15 人气:0
本文关键词: PHP,sqlite的,PDO
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.393 (s). 10 q(s)