【问题标题】:Can I fetch multiple different SQL statements in one times loop? in PHP我可以在一次循环中获取多个不同的 SQL 语句吗?在 PHP 中
【发布时间】:2016-09-27 04:47:29
【问题描述】:

我必须查询 SQL-SERVER 的查询和 MYSQL 的查询(结果格式相同但数据库不同) , 但是我想在 PHP 中的一个 while 循环中调用它们,我可以这样做吗?

例如

$mssql_query = mssql_query(..mssql..);
$mysql_query = mysql_query(..mysql..);
while( $mssql_rs = mssql_fetch_assoc($mssql_query)|| $mysql_sql = mysql_fetch_assoc($mysql_query) )
{               
    ..some action..
}

已编辑: 我只有一个已解决的答案。 @Drew while(bContinue) 的想法对我有用

这是我的代码

$mssql_query = mssql_query(..mssql..);
$mysql_query = mysql_query(..mysql..);
$continue = true;

while( $continue ){

    $ms_rs = mssql_fetch_assoc($mssql_query);
    $my_rs = mysql_fetch_assoc($mysql_query);

    if($ms_rs){ ..some action.. }
    if($my_rs ){ ..some action.. }

    $continue = $ms_rs|| $my_rs;

}

感谢您的所有想法。

【问题讨论】:

  • 我认为这行不通,因为如果 SQL Server fetch 返回 true,那么 MySQL fetch 甚至都不会发生。
  • 我不确定,但您需要检查 || 而不是 &&
  • @Anant 我尝试了&&||,但都不起作用"
  • while(bContinue) 在里面执行查询,然后是if 块。处理while的结尾和bContinuevar的维护
  • 警告:如果您只是学习 PHP,请不要学习过时的 mysql_query 接口。这很糟糕,已在 PHP 7 中删除。PDO is not hard to learn 之类的替代品和PHP The Right Way 之类的指南有助于解释最佳实践。确保确保您的用户参数为properly escaped,否则您将得到严重的SQL injection bugs

标签: php mysql sql sql-server


【解决方案1】:

您可以在黑暗中拍摄,并尝试同时使用 data_seek 的两种风格,前提是它们具有相同的行数和相同的列名。

这是想法/这里也是一些伪代码(当然未经测试):

$mssql_query = mssql_query(< the mssql query statement >);
$mysql_query = mysql_query(< the mysql query statement >);

$ms_num_rows = mssql_num_rows($mssql_query);
$my_num_rows = mssql_num_rows($mysql_query);

if($ms_num_rows === $my_num_rows) { // same number of rows on both result sets

    for($i = 0; $i < $my_num_rows; $i++) {
        mssql_data_seek($mssql_query, $i);
        mysql_data_seek($mysql_query, $i);

        $ms_row = mysql_fetch_assoc($mssql_query);
        $my_row = mysql_fetch_assoc($mysql_query);

        echo $ms_row['same_field_1'];
        echo $my_row['same_field_1'];

        // and others
    }

}

注意:当然,您可能会在使用这些函数时收到弃用警告,这些函数很可能有对应的 PDO,您可以将它们移植到使用这些函数中。

手动输入:

http://php.net/manual/en/function.mssql-data-seek.php
http://php.net/manual/en/function.mysql-data-seek.php

【讨论】:

    【解决方案2】:

    我刚刚得到了答案。它对我有用 来自@Drew while($continue)的想法

    这是我的代码

    $mssql_query = mssql_query(..mssql..);
    $mysql_query = mysql_query(..mysql..);
    $continue = true;
    
    while( $continue )
    
    {               
        $ms_rs = mssql_fetch_assoc($mssql_query);
        $my_rs = mysql_fetch_assoc($mysql_query);
                    
        if($ms_rs){ ..some action.. }
        if($my_rs ){ ..some action.. }
    
        $continue = $ms_rs|| $my_rs;
    
    }
    

    感谢您的所有想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-22
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 2020-03-26
      相关资源
      最近更新 更多