繁体   English   中英

PHP中的SQLite PDO数据库

[英]SQLite PDO Databases in PHP

因此,我一直在尝试在线寻找答案,但似乎没有得到答案。 我已经阅读了http://php.net上的所有PHP参考,但仍然找不到具体的答案。

我的问题是:

我有一个PHP源文件,该文件通过以下方式加载到HTML文件中:

<form name="input" action="register.php" method="get">
User: <input type="text" name="user"  />
Pass: <input type="text" name="pass"  />
<p><input type="submit" value="Submit" />
</form>

到目前为止一切顺利,对吗? 所以,那么我有这个.php文件:

<?php
    $db = new PDO('sqlite::database:');
    $a = $_GET['user'];
    $b = $_GET['pass'];

    $firstSearchF = $db->prepare('SELECT nome FROM Users WHERE name_U = _nome');
    $firstSearchF->bindParam('_nome', $a, PDO::PARAM_STR);
    $firstSearchF->execute();
$firstSearch = $firstSearchF->fetch();

    if(empty($firstSearch))
    {
        $final = $db->prepare('INSERT INTO Users (name_u,password) VALUES(nome,passW)');
    $final->bindParam('nome', $a, PDO::PARAM_STR);
    $final->bindParam('passW', $b, PDO::PARAM_STR);
    $final->execute();

    echo 'User Registered Successfully!';
}
else
{
    echo 'Sorry, but the requested user already exists in the database. Try again!';
}
?>

每当我在表单上输入某些内容并点击Submit时,输出将如下所示:

"prepare('SELECT nome FROM Users WHERE name_U = _nome'); $firstSearchF->bindParam('_nome', $a, PDO::PARAM_STR); $firstSearchF->execute(); $firstSearch = $firstSearchF->fetch(); if(empty($firstSearch)) { $final = $db->prepare('INSERT INTO Users (name_u,password) VALUES(nome,passW)'); $final->bindParam('nome', $a, PDO::PARAM_STR); $final->bindParam('passW', $b, PDO::PARAM_STR); $final->execute(); echo 'User Registered Successfully!'; } else { echo 'Sorry, but the requested user already exists in the database. Try again!'; } ?>"

唯一的问题是,我知道输出是->之后的内容。 但是为什么会这样呢? 我只是想测试一下,而不能像回声之后那样使输出正常工作。

如何解决这个问题? 有任何想法吗? 先谢谢你。 ^^

首先,通过将错误报告放在脚本顶部来启用错误报告以进行开发

ini_set('display_errors', 'On');
error_reporting(E_ALL);

其次,您的SQLite DSN不正确。 应该是

sqlite:/path/to/database/file

要么

sqlite::memory:

参见http://www.php.net/manual/en/ref.pdo-sqlite.connection.php

您的bind参数也不正确。 它应该以冒号作为前缀,例如

$firstSearchF = $db->prepare('SELECT nome FROM Users WHERE name_U = :nome');
$firstSearchF->bindParam('nome', $a, PDO::PARAM_STR);

其他语句和绑定也是如此。

最后,我不完全相信您在问题中发布的代码与环境中显示的代码相同。 您能否再次检查并发布任何更正?

另外,通过GET表单提交凭据,这很酷。 请改用POST 存储纯文本密码,也是禁止的。


更新资料

考虑到您所看到的,想一想,我怀疑您是在启用PHP的Web服务器上运行它。 确认您具有正在运行的Web服务器,并且已将PHP作为模块或CGI安装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM