我正在尝试访问类accountPass
session_start();
if(!isset($_SESSION['login']))
{
header("location:login.php");
}
include_once '../controller/controller.php';
include_once '../controller/Validation.php';
$account = new account();
$validation = new Validation();
$id = $_SESSION['user.id'];
$query = "SELECT * FROM accounts WHERE user.id = '$id'";
$res = $account->accountPass($query);
但我似乎不明白为什么这里的结果是假的。
public function accountPass($query)
{
$result = $this->connection->query($query);
if ($result == false)
{
echo 'Error: Cannot execute accountPass';
return false;
}
if ($result->num_rows > 0)
{
$row = $result->fetch_assoc();
}
return $row;
}
发布于 2018-07-11 03:58:42
您需要通过使用已知值对查询进行测试来验证查询是否返回一行。根据MySQL中的快速测试,名为user.id
的列在查询时不带反记号是无效的。(假设您使用的是MySQL或类似的语言)
SELECT * FROM accounts WHERE user.id = '1'; -- fails
SELECT * FROM accounts WHERE `user.id` = '1'; -- works
因此,不建议在列名中使用句点。如果要使用别名联接表,则别名指示符后面紧跟一个句点,然后是列名。举个例子:
SELECT a.user, r.role FROM accounts AS a LEFT JOIN roles as r ... WHERE a.user = 1001;
(以上查询不完整)
从accounts
表中获取user
列,从roles
表中获取role
列。
https://stackoverflow.com/questions/51271299
复制相似问题