我刚刚意识到我可能在一些问题上错过了这条船。在我的网站的某些部分,我有$ 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
感谢您的帮助!
答案 0 :(得分:1)
$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'";
答案 1 :(得分:1)
在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来进行数据库交互。从各个方面来看,它们是更好的方法。
答案 2 :(得分:0)
您想要运行此查询:
SELECT login_id
FROM login
WHERE login_id in ('$login_id1', '$login_id2)';
这将返回两个行,每行包含login_id
列。你需要循环它们。
在此过程中,您还应该了解参数化查询以避免SQL注入攻击。