WHERE 不适用于 LEFT JOIN
WHERE does not work with LEFT JOIN
我有两个假设表 'applications' 和 'jobs'。我想加入两个表以显示基于 'jobs_id' 和登录用户(这是一个全局变量)
的结果
现在,我有一个简单的查询:
<?php
$user = 'root';
$pass = '';
$db = new PDO( 'mysql:host=localhost;dbname=mydb', $user, $pass );
$sql = " SELECT e.application_id, e.candidate_login, e.company_id, e.jobs_id, u.jobs_title, u.jobs_manager
FROM applications
AS e LEFT JOIN jobs
AS u ON e.jobs_id = u.jobs_id
WHERE e.candidate_login='[usr_login]'
";
$query = $db->prepare( $sql );
$query->execute();
$results = $query->fetchAll( PDO::FETCH_ASSOC );
?>
我的问题是 WHERE 子句禁止显示数据。
我正在使用变量“[usr_login]”来仅显示属于登录用户的结果。它适用于除此查询之外的所有其他查询。
当我将该变量更改为常量(例如电子邮件地址)时,会显示结果。
我也肯定变量存在,因为其他数据基于它,并且按预期工作。
所以我的问题是,WHERE 子句有什么问题?
谁能给我指出正确的方向,好吗?
在 SQL 语句中引用变量的方法是使用 ?
或命名参数,前面加一个冒号,如 :usr_login
,您不应该引用它.
然后你需要给它绑定你的实际值:
$sql = " SELECT e.application_id, e.candidate_login, e.company_id, e.jobs_id,
u.jobs_title, u.jobs_manager
FROM applications AS e
LEFT JOIN jobs AS u
ON e.jobs_id = u.jobs_id
WHERE e.candidate_login = ?
";
$query = $db->prepare( $sql );
$query->bind_param('s', $usr_login);
$query->execute();
你当然必须有变量 $usr_login
(带有字符串值)才能工作。
我有两个假设表 'applications' 和 'jobs'。我想加入两个表以显示基于 'jobs_id' 和登录用户(这是一个全局变量)
的结果现在,我有一个简单的查询:
<?php
$user = 'root';
$pass = '';
$db = new PDO( 'mysql:host=localhost;dbname=mydb', $user, $pass );
$sql = " SELECT e.application_id, e.candidate_login, e.company_id, e.jobs_id, u.jobs_title, u.jobs_manager
FROM applications
AS e LEFT JOIN jobs
AS u ON e.jobs_id = u.jobs_id
WHERE e.candidate_login='[usr_login]'
";
$query = $db->prepare( $sql );
$query->execute();
$results = $query->fetchAll( PDO::FETCH_ASSOC );
?>
我的问题是 WHERE 子句禁止显示数据。
我正在使用变量“[usr_login]”来仅显示属于登录用户的结果。它适用于除此查询之外的所有其他查询。
当我将该变量更改为常量(例如电子邮件地址)时,会显示结果。
我也肯定变量存在,因为其他数据基于它,并且按预期工作。
所以我的问题是,WHERE 子句有什么问题?
谁能给我指出正确的方向,好吗?
在 SQL 语句中引用变量的方法是使用 ?
或命名参数,前面加一个冒号,如 :usr_login
,您不应该引用它.
然后你需要给它绑定你的实际值:
$sql = " SELECT e.application_id, e.candidate_login, e.company_id, e.jobs_id,
u.jobs_title, u.jobs_manager
FROM applications AS e
LEFT JOIN jobs AS u
ON e.jobs_id = u.jobs_id
WHERE e.candidate_login = ?
";
$query = $db->prepare( $sql );
$query->bind_param('s', $usr_login);
$query->execute();
你当然必须有变量 $usr_login
(带有字符串值)才能工作。