【问题标题】:PHP and SQLite No such file or directory?PHP 和 SQLite 没有这样的文件或目录?
【发布时间】:2023-04-07 17:24:01
【问题描述】:

我对数据库完全陌生,我正在尝试让我的登录页面检查数据库中的用户名和密码。我收到此错误:

警告:mysqli_connect(): (HY000/2002): 第 11 行的 /Applications/XAMPP/xamppfiles/htdocs/checklogin.php 中没有这样的文件或目录 无法连接

运行 XAMPP,我尝试修改 php.ini 文件并尝试连接到 127.0.0.1 而不是 localhost。我不确定它为什么这样做。我的 test.db 文件应该在哪里?在与 index.html 相同的目录中?

<?php


$host="localhost"; // Host name 
$username="test"; // Mysql username 
$password="test"; // Mysql password 
$db_name="test"; // Database name 
$tbl_name="members"; // Table name 

// Connect to server and select databse.
mysqli_connect("$host", "$username", "$password")or die("cannot connect"); 
mysqli_select_db("$db_name")or die("cannot select DB");


// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysqli_real_escape_string($myusername);
$mypassword = mysqli_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysqli_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>

这也有效吗?

 function getConnected($host,$username,$password,$db_name) 
 {
 $mysqli = new mysqli($host, $username, $password, $db_name);

 if($mysqli->connect_error) 
  die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

 return $mysqli;
 }

 $mysqli = getConnected('localhost','user','password','database');

【问题讨论】:

  • 你要mysql还是sqlite?标题说sqlite,但我只看到mysql函数。
  • 顺便说一句,localhost 和 127.0.0.1 是一回事。
  • 如果你想通过mysql接口使用sqlite数据库,那肯定行不通。
  • sqlite 有自己的功能。通常有等价物,但不一定。 PHP 手册是一个很大的帮助。 php.net/manual/en/function.sqlite-open.php
  • 好的...所以你有mysql代码(上面),你想将它转换为使用sqlite接口吗?

标签: php mysql database


【解决方案1】:

连接到 SQLite

这看起来不像是连接到 sqlite 数据库,因为您没有指定数据库文件的路径。试试这个小脚本,以更简洁的方式连接到您的数据库。

class Db {

    private $config;
    private $connection;

    public function __construct()
    {
        $this->config = array(
            'path' => 'path/to/your/database.sqlite'
        );

        $this->connect();
    }

    private function connect()
    {
        $connectionQuery = 'sqlite:' .$this->config['path'];

        try {
            $this->connection = new PDO($connectionQuery);
        } catch (PDOException $e) {
            echo $e->getMessage();
        }

        $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    public function getConnection()
    {
        return $this->connection;
    }

}

$db = new DB();

数据库路径

将此'path/to/your/database.sqlite'更改为您喜欢的任何路径。

检索连接句柄

只需使用 $db->getConnection() 即可访问它。

【讨论】:

  • 为什么要投反对票?他正在寻求解决方案,以连接到他的 sqlite 数据库。
  • 不准确。他们很困惑,你可能没有仔细阅读。他们有使用mysqli 接口的数据库代码,他们想将其转换为使用sqlite 接口,但不知道如何操作。这些信息实际上是正确的,但与问题没有直接关系。您可以轻松修改它以直接回答问题。如果你这样做了,你可能会得到我的支持。
猜你喜欢
  • 1970-01-01
  • 2013-01-16
  • 2018-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 2014-02-04
  • 2018-08-31
相关资源
最近更新 更多