[英]How to use PHP mysqli() in a non-object oriented environment
我有以下連接文件...
<?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)
{ ...
我嘗試運行此命令,但收到錯誤消息“不在對象上下文中時使用$ this”。 我只需要執行簡單的查詢,並且不想處理OO PHP,但是現在不建議使用mysql。 如何在此非OO文件中引用隨附的連接文件以運行SELECT查詢?
$this
是為PHP中的類保留的關鍵字。 由於您以過程方式運行查詢,因此不需要$this->
先決條件。
您可以輕松地在mysqli
內使用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注入的攻擊-因此,最好考慮使用Prepared Statements 。
僅僅因為mysqli提供了OO接口,並不意味着您的代碼必須以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();
您將OO和函數調用混為一談,這使您感到困惑。 mysql_*
函數與mysqli_*
函數是不同的,因此在您擁有mysql_*
任何地方都是錯誤的。
另外,不要這樣做: DBConnect->mysql_query
。 DBConnect是MySQLi的實例,因此只需調用DBConnect->query
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.