2013-12-13 44 views
1

我完全不熟悉數據庫,我試圖讓我的登錄頁面檢查數據庫的用戶名和密碼。我得到這個錯誤:PHP和SQLite沒有這樣的文件或目錄?

警告:mysqli_connect():(HY000/2002):在/Applications/XAMPP/xamppfiles/htdocs/checklogin.php在線11 沒有這樣的文件或目錄無法連接

運行XAMPP,我嘗試修改php.ini文件,並嘗試連接到127.0.0.1而不是本地主機。我不確定它爲什麼這樣做。另外我的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'); 
+1

你想要mysql或sqlite嗎?標題說sqlite,但我只看到mysql函數。 –

+1

btw,localhost和127.0.0.1是一回事。 –

+1

如果你正試圖通過mysql接口使用sqlite數據庫,那肯定是行不通的。 –

回答

0

連接到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(); 

數據庫路徑

更改此'路徑/到/你/ database.sqlite'到任何你喜歡的路徑。

檢索連接處理

只需使用$ DB->的getConnection()訪問它。

+0

爲什麼downvote?他正在尋求解決方案,以連接到他的sqlite數據庫。 –

+0

不準確。他們感到困惑,你可能沒有仔細閱讀。他們有使用'mysqli'接口的數據庫代碼,他們希望將其轉換爲使用'sqlite'接口,但不知道如何。這些信息事實上是正確的,但與問題沒有直接關係。您可以輕鬆修改它以直接回答問題。如果你這樣做了,你可能會從我這裏得到讚揚。 –

相關問題