代码之家  ›  专栏  ›  技术社区  ›  Manos Dilaverakis

使用PHP在MySQL中进行多个查询的错误检测

  •  1
  • Manos Dilaverakis  · 技术社区  · 15 年前

    我有一个用于mysqli的包装器php类,它需要能够处理多个查询(使用mysqli::multi_query)。它可以工作,但我找不到当其中一个查询失败时应该如何获取错误详细信息。这是代码的简化版本:

    $queries=array('SELECT * FROM core_order_items',
                    'SELaaaaECT * FROM core_order_items',
                    );
    
    $dbConnection = mysqli_connect('localhost', 'siella', 'arifisis', 'mydb');
    $dbConnection->set_charset('utf8'); 
    $dbConnection->multi_query(implode(';', $queries)) ;
    
    $i=0;
    do {
        echo "Query:  " . $queries[$i] . " - ";
        $resultset=$dbConnection->store_result();
        if($resultset===false && strlen($dbConnection->errno)>0) {
            echo "Returned error for query " . $i . "<br>";
        }
        else {
            echo "Returned set for query " . $i . "<br>";
        }
         $i++;
    }   
    while ($dbConnection->next_result());
    
    mysqli_close($dbConnection);
    

    请注意,在两个SQL查询中,第一个很好,第二个无效。 结果是:

    Query: SELECT * FROM core_order_items - Returned set for query 0
    

    我的第二个问题怎么了?如果我修复了它,它就会显示出来,但是当发生错误时,它就好像不在数组中一样。如何获取错误/否消息?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Scott Saunders    15 年前

    docs

    $dbConnection-->multi_query($query); 
    do { 
       $dbConnection-->use_result()->close(); 
       echo "Okay\n"; 
    } while ($mysqli->next_result()); 
    
    if ($mysqli->errno) { 
       echo "Stopped while retrieving result : ".$mysqli->error; 
    }