在PHP中顺序查询多个MSSQL表中的一个值

在PHP中顺序查询多个MSSQL表中的一个值,php,sql,sql-server,for-loop,while-loop,Php,Sql,Sql Server,For Loop,While Loop,我有两个表需要查询单个结果,但是如果在$table0中找到了它,我需要停止搜索并使用该行中的值。大概是这样的: $p1_sql = "SELECT TOP 1 * FROM '$table0' WHERE phone1 = '$cidnumber'"; $p2_sql = "SELECT TOP 1 * FROM '$table0' WHERE phone2 = '$cidnumber'"; $c1_sql = "SELECT TOP 1 * FROM '$table1' WHERE conta

我有两个表需要查询单个结果,但是如果在$table0中找到了它,我需要停止搜索并使用该行中的值。大概是这样的:

$p1_sql = "SELECT TOP 1 * FROM '$table0' WHERE phone1 = '$cidnumber'";
$p2_sql = "SELECT TOP 1 * FROM '$table0' WHERE phone2 = '$cidnumber'";
$c1_sql = "SELECT TOP 1 * FROM '$table1' WHERE contactphone = '$cidnumber'";
$c2_sql = "SELECT TOP 1 * FROM '$table1' WHERE contactphone2 = '$cidnumber'";
$c3_sql = "SELECT TOP 1 * FROM '$table1' WHERE contactphone3 = '$cidnumber'";
$c4_sql = "SELECT TOP 1 * FROM '$table1' WHERE contactphone4 = '$cidnumber'";

$p1_res = mssql_query($p1_sql);
$p1_row = mssql_num_rows($p1_res);

$p2_res = mssql_query($p2_sql);
$p2_row = mssql_num_rows($p2_row);

$c1_res = mssql_query($c1_sql);
$c1_row = mssql_num_rows($c1_res);

$c2_res = mssql_query($c2_sql);
$c2_row = mssql_num_rows($c2_res);

$c3_res = mssql_query($c3_sql);
$c3_row = mssql_num_rows($c3_res);

$c4_res = mssql_query($c4_sql);
$c4_row = mssql_num_rows($c4_res);

if ($p1_row = 1){
    $p1_res = $newres;
    goto okres;
} elseif ($p2_row = 1) {
    $p2_res = $newres;
    goto okres;
} elseif ($c1_row = 1) {
    $c1_res = $newres;
    goto okres;
} elseif ($c2_row = 1) {
    $c2_res = $newres;
    goto okres;
} elseif ($c3_row = 1) {
    $c3_res = $newres;
    goto okres;
} elseif ($c4_row = 1) {
    $c4_res = $newres;
    goto okres;
} else {
    $newres = "na";
    goto nares;
}

okres:
$cid_sel = mssql_query("SELECT TOP 1 * FROM '$table0' WHERE phone1 = '$cidnumber'");

然而,这是丑陋的,不起作用。我试图使用“for each…”或“while something”,但我无法理解它是如何工作的。我甚至不知道它是否会。最好的办法是什么?这是我第一次接触到这样的东西,非常感谢您的帮助。

不必做这么多单独的查询。就联接和联合而言,您熟悉基本SQL吗?如果没有,您应该阅读它们-您在这里想要的似乎可以通过单个查询实现。

我会将不同的查询添加到一个数组中,并使用foreach该数组循环到随后的数据库查询中。一旦你找到你要找的东西,你就可以使用break打破循环;指挥部

在纯sql中使用连接也可能是一个解决方案,但我不完全确定您希望在这里实现什么


祝你好运

我想做所有的联合,但这不是一个大问题吗?我得到了什么?我想我真正想做的是一次运行每一个,检查是否出现结果,如果出现,请停止。在两者之间加一个IF?我可以在查询中运行IF语句吗?或者在phone1=$cidnumber THEN时选择CASE???如果phone2=$CIDNAMER,则为其他情况???其他的类似这样的工作?@lorsungcu-你不能真的在查询中放入IF语句,你可以,但不能在这里做你想做的事情。如果联合查询对您不起作用,那么最好编写一个存储过程,在这个存储过程中,您实际上可以使用If。。。然后是您想要的逻辑。您从一个查询中获得的是更简单/更好的代码,包括一个要处理的结果,而不是许多。许多查询也有一个问题,即其中一个可能会在过程中失败。不管怎样,我认为这让我走上了正确的方向。谢谢