我有以下连接文件...
<?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
对象,如下所示:
$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 注入的影响 - 因此查看预准备语句可能是明智的。
仅仅因为 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
即可。