![](/img/trans.png)
[英]Can we SELECT ONE FROM (a table) WHERE we have multiple rows of same column names?
[英]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'";
在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.