2013-11-14 18 views
0

我有以下連接文件...如何在非面向對象的環境

<?php 
session_start(); 

// Create new mysql connection object 
$DBConnect = @new mysqli("localhost","root","","Ladle"); 
?> 

其中包括我在下面的腳本...

<?php ob_start() ?> 
<?php session_start() ?> 
<?php 
//Connects to the database 
include("inc_LadleDB.php"); 
$this->DBConnect = $DBConnect; 

// Get the e-mail address entered 
$email = $_POST['user_email']; 

$sql = $this->DBConnect->mysql_query("SELECT * FROM tblEmployees WHERE fldEmail='". 
          $email."'") or die(mysql_error()); 

$Result = mysql_fetch_assoc($sql); 

//validate email fo valid maine account 
if($Result) 
{ ... 

使用PHP的mysqli()我試着運行這個,但得到了「不使用對象上下文時使用$ this」的錯誤;我只需要執行簡單的查詢,並且不想處理OO PHP,但現在我沒有選擇mysql已被棄用。我怎樣才能引用包含的連接文件在這個沒有OO文件中運行SELECT查詢?

+1

'mysql_ *'!='mysqli_ *',你可以在例子#1->程序中找到[mysqli](http://www.php.net/manual/en/mysqli.query.php) style –

+0

您不能將調用與'mysqli _ *()'調用'mysql _ *()'。單獨使用'mysqli',因爲'mysql'已被棄用。 – 2013-11-14 22:13:28

+0

對OP的問題:mysqli文檔沒有顯示如何在程序上調用所有函數?你從哪裏得到了想要使用面向對象來使用它們的想法? – Barmar

回答

2

$this是爲PHP中的類保留的關鍵字。由於您以程序方式運行查詢,因此不需要$this->先決條件。

您可以輕鬆地使用mysqli對象代碼內,如下所示:

$DBConnect = new mysqli("localhost","root","","Ladle"); 

// Get the e-mail address entered 
$email = $_POST['user_email']; 

$sql = $DBConnect->query("SELECT * FROM tblEmployees WHERE fldEmail='". 
          $email."'"); 

$Result = $DBConnect->fetch_assoc($sql); 

//validate email fo valid maine account 
if($Result) 
{ ... 

僅供參考,使用@超越的錯誤是一個壞習慣進入。你應該使用try { } catch() { }塊來處理錯誤。其次,您的代碼容易受到SQL injection的影響 - 因此,您可以考慮Prepared Statements

+0

對於幻影downvoter,請解釋,而不僅僅是魯莽地點擊downvote按鈕。這也適用於Barmar的回答... – BenM

+0

恰恰相反。嘗試{} catch(){}塊不應該用於處理錯誤消息 –

+1

因此,你建議通過try {} catch(){}'來超越它們嗎? – BenM

0

你在混合OO和函數調用,這會導致你混淆。 mysql_*功能與mysqli_*功能不一樣,所以無處不在mysql_*是錯誤的。另外,不要這樣做:DBConnect->mysql_query。 DBConnect是MySQLi的一個實例,因此請致電DBConnect->query

1

只是因爲mysqli提供了一個面向對象的接口,這並不意味着你的代碼必須以OO風格編寫。您可以在應用程序中使用普通函數和變量。

$email = $DBConnect->real_escape_string($_POST['user_email']); 

$sql = $DBConnect->query("SELECT * FROM tblEmployees WHERE fldEmail='". 
         $email."'") or die($DBConnect->error); 

$Result = $sql->fetch_assoc(); 
+0

謝謝我真的很感謝幫助! – codingManiac