繁体   English   中英

选择具有多行/相同列的语句 - WHERE有多个变量,并且是FROM相同的表

[英]Select statement with multiple rows/same column - WHERE has multiple variables and is FROM same table

我刚刚意识到我可能在一些问题上错过了这条船。 在我的网站的某些部分,我有$ sql变量,它们从同一个表中的同一列的不同行检索值,但在WHERE子句中有不同的变量:

$sql1 = "SELECT login_id FROM login WHERE login_id = '$login_id1'";
$sql2 = "SELECT login_id FROM login WHERE login_id = '$login_id2'";

$result1 = mysqli_fetch_assoc(mysqli_query($con,$sql1));
$result1a = $result1['login_id'];

$result2 = mysqli_fetch_assoc(mysqli_query($con,$sql2));
$result2a = $result2['login_id'];

由于我是从同一个表中选择,是不是有一些方法来组合$ sql1和$ sql2以及$ result变量,如下所示?

$sql = "SELECT login_id FROM login WHERE login_id = '$login_id1' AS 'first', login_id = 
'$login_id2' AS 'second'";

$result = mysqli_fetch_assoc(mysqli_query($con,$sql));
$result1 = $result['first']; //uses $login_id1
$result2 = $result['second']; //uses $login_id2

另一种选择是:

$sqlAlt = "SELECT login_id FROM login WHERE (login_id = '$login_id1' OR login_id =   
'$login_id2')";

除了我不知道如何使用变量$ login_id1或$ login_id2从$ sqlAlt(使用mysqli_fetch_assoc或者其他一些函数)中提取login_id。 就像是

$result1 = $sqlAlt['login_id'] //WHERE $result1 is from $login_id1
$result2 = $sqlAlt['login_id'] //WHERE $result2 is from $login_id2

谢谢你的帮助!

$sql = "SELECT login_id AS FIRST FROM login WHERE login_id = '$login_id1' 
UNION ALL 
SELECT login_id AS SECOND FROM login WHERE login_id = '$login_id2'";

http://www.w3schools.com/sql/sql_union.asp

在SQL中使用OR搜索一个查询中的login_ids:

SELECT login_id FROM login WHERE login_id = '$login_id1' OR login_id = '$login_id2';

甚至

SELECT login_id FROM login WHERE login_id IN ('$login_id1', '$login_id2');

这将返回多行。 要获得这些,请从mysqli_query()返回一个mysql查询结果,并且在检查它不是错误并且行数超过0之后,您可以在while()循环它以一次获取一个返回的行:

$result = mysqli_query($con,$sql) ;
while ($row = mysqli_fetch_assoc($result)) {
    $currentResult = $result['login_id'] ;
}

一旦你开始工作,就要认真考虑阅读准备好的语句和PDO来进行数据库交互。 从各个方面来看,它们是更好的方法。

您想要运行此查询:

SELECT login_id 
FROM login
WHERE login_id in ('$login_id1', '$login_id2)';

这将返回行,每行包含一个login_id列。 你需要循环它们。

在此过程中,您还应该了解参数化查询以避免SQL注入攻击。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM