【发布时间】:2018-04-07 01:26:45
【问题描述】:
我正在尝试在公共函数中使用全局关键字。
这就是我所拥有的,你会看到变量 $memberID,我已将它注释掉,但可以回显它下面的 memberID,但是当它在函数内部使用时,它无法识别它。
我有“全局 $memberID;”内部功能,但不会工作。
<?php
$memberID = $_GET['memberID'];
// echo $memberID;
class DB_Functions {
private $db_conx;
function __construct() {
include_once ('db_conx.php');
$this->db_conx = DBC::connect();
}
function __destruct() {}
/**
* Start SERIES ------------------------------------------------------------
*/
public function getActiveSeries() {
global $memberID;
// $memberID = '1';
$sql = "SELECT * FROM series WHERE isActive = 'y' AND USER_ID = '$memberID'";
$result = mysqli_query($this->db_conx,$sql);
return $result;
}
}
?>
【问题讨论】:
-
为什么不直接在
getActiveSeries方法内访问$_GET['memberID']? -
不要使用全局,只需将其作为参数传递给函数即可。当你像这样将变量连接到 SQL 中时,你的代码很容易受到 SQL 注入的攻击。
-
那样工作,但我有大约 30 多个其他公共函数,我只是试图根据全局变量 $memberID 调用数据库查询 USER_ID。
-
为什么不在构造函数中传递成员ID。使用面向对象的编程特性。全局关键字是不好的做法
-
我认为 global 关键字是不好的做法,这就是我在这里寻找其他建议的原因。